1.首先定义结构体数组:

typedef struct BleAndTspRmtCmd{
char terminal[3];
char note[3];
char rmtCmd[10];
char cmdPropt[24];
};

BleAndTspRmtCmd为结构体名,可以通过这个结构体名定义其他结构体变量,struct BleAndTspRmtCmd variable;

或者定义结构体数组变量,struct BleAndTspRmtCmd variable[];

2.或者定义全局结构体变量,

typedef struct {
char terminal[3];
char note[3];
char rmtCmd[10];
char cmdPropt[24];
}BleAndTspRmtCmd;

然后根据这个结构体变量定义其他结构体变量,BleAndTspRmtCmd variable;或者数组变量BleAndTspRmtCmd variable[];

3.初始化结构体方法:

方法一:定义结构体数组变量的时候直接初始化(赋值),因为结构体内变量为字符数组,也就相当于字符串指针,这是字符数组的特殊性。

struct BleAndTspRmtCmd myRmdCmdSet[28] = {{"XX", "XX", "XX", "XX"}, {"XX", "XX", "XX", "XX"}......}

方法二:先定义结构体数组,后面再赋值。

struct BleAndTspRmtCmd myRmdCmdSet[] = {NULL};

 这种赋值方式分两种,目前我已经验证成功的:

先赋值临时变量;

int index = 0;
char node_temp[4] = "XX";
char terminal_temp[4] = "XX";
char rmtCmd_temp[11] = "XX";
char cmdPropt_temp[24] = "XX";

然后再将临时变量赋值给结构体数组变量,遍历:

第一:strcpy,拷贝临时字符数组变量;

for (; index < 28; index ++)
{

strcpy(myRmdCmdSet[index].terminal, terminal_temp);
strcpy(myRmdCmdSet[index].note, node_temp);
strcpy(myRmdCmdSet[index].rmtCmd, rmtCmd_temp);
strcpy(myRmdCmdSet[index].cmdPropt, cmdPropt_temp);

}

第二:memcpy,与第一种类似,只是函数不一样;

for (; index < 28; index ++)
{

memcpy(myRmdCmdSet[index].terminal, terminal_temp, sizeof(terminal_temp));
memcpy(myRmdCmdSet[index].note, node_temp, sizeof(node_temp));
memcpy(myRmdCmdSet[index].rmtCmd, rmtCmd_temp, sizeof(rmtCmd_temp));
memcpy(myRmdCmdSet[index].cmdPropt, cmdPropt_temp, sizeof(cmdPropt_temp));

}

此时就完成了结构体数组变量的赋值。

 

注意,由于结构体内的变量都是字符数组,相当于指针,他们都指向结构体对应的地址,输出时就会输出指向的地址开始的值,直到该结构体完。

要想输出正确的值,printf必须进行截取和对齐。

原样输出字符串:
    printf("%s", str);

2. 输出指定长度字符串, 超长时不截断, 不足时右对齐:
    printf("%Ns", str);             --N 为指定长度的10进制数值

3. 输出指定长度字符串, 超长时不截断, 不足时左对齐:
    printf("%-Ns", str);            --N 为指定长度的10进制数值

4. 输出指定长度字符串, 超长时截断, 不足时右对齐:
    printf("%N.Ms", str);           --N 为最终的字符串输出长度
                                    --M 为从参数字符串中取出的子串长度

5. 输出指定长度字符串, 超长时截断, 不足时左对齐是:
    printf("%-N.Ms", str);          --N 为最终的字符串输出长度
                                    --M 为从参数字符串中取出的子串长度

posted on 2017-11-08 18:06  red_rose  阅读(31242)  评论(0编辑  收藏  举报