-
2021-05-21 01:55:23
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 为从参数字符串中取出的子串长度
更多相关内容 -
C语言结构体数组同时赋值的另类用法
2021-01-20 05:26:01说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子: #include struct student { int a; int b ; int c ; }; struct student array1[1000] ; int main(void) { int i ; ... -
c语言 结构体数组的赋值
2021-10-17 11:07:40c语言 结构体数组的赋值 //**创建结构体** #include<stdio.h> struct Class{ int id; char name[10]; }; //******结构体数组的赋值 int main(){ int m; //定义结构体数组的长度所需变量 int i; printf(...c语言 结构体数组的赋值
//**创建结构体** #include<stdio.h> struct Class{ int id; char name[10]; }; //******结构体数组的赋值 int main(){ int m; //定义结构体数组的长度所需变量 int i; printf("list size is : "); //定义结构体数组的长度 scanf("%d",&m); struct Class class_1[m]; //定义结构体数组变量class_1,变量类型为结构体struct Class struct Class *p; //定义结构体指针 p=&class_1[0]; //结构体指针指向结构体数组的第一个数组class_1[0]; //************* for(i=0;i<m;i++){ //此循环是对结构体数组class_1每一个的成员的赋值 printf("plz enter his ID : "); scanf("%d",&p[i].id); printf("plz enter his name : "); scanf("%s",&p[i].name); p=&p[i]; printf("Sceesslly insert! his id is : %d and his name is %s\n",(*p).id,(*p).name); } }
以上是结构体数组的赋值,由于本人能力有限,若有不足,望各位指正。
-
C语言结构体数组成员的赋值
2021-11-28 11:18:45结构体数组成员在引用的时候取的是数组名(是一个常量),所以不能直接将地址值赋给常量。 正确代码: 字符数组可以用strcpy(结构体字符数组成员,字符串)的方式赋值 也可以用memcpy(c2,c1,strlen(c1)+1)...结构体的数组不能直接等号赋值,如果直接赋值会出现如下错误
错误代码示范:
编译结果:
错误原因:
结构体数组成员在引用的时候取的是数组名(是一个常量),所以不能直接将地址值赋给常量。
正确代码:
字符数组可以用strcpy(结构体字符数组成员,字符串)的方式赋值
也可以用memcpy(c2,c1,strlen(c1)+1)赋值
整型数组可以用循环来赋值
也可以用memcpy(c2,c1,strlen(c1))赋值
-
C语言结构体数组定义及赋值
2021-08-03 17:10:17做了一个小的例子: #include int main() { struct Link { int LinkId; int LinkLen; int NxtLnkId; }Lnk[3]; Lnk[0].LinkId = 1;... printf("结构体数组赋值完成。"); } 结构体数组的赋值情况:做了一个小的例子:
#include <stdio.h> int main() { struct Link { int LinkId; int LinkLen; int NxtLnkId; }Lnk[3]; Lnk[0].LinkId = 1; Lnk[0].LinkLen = 300; Lnk[0].NxtLnkId = 2; Lnk[1].LinkId = 2; Lnk[1].LinkLen = 100; Lnk[1].NxtLnkId = 3; Lnk[2].LinkId = 3; Lnk[2].LinkLen = 100; Lnk[2].NxtLnkId = 4; printf("结构体数组赋值完成。"); }
结构体数组的赋值情况:
-
结构体中数组成员赋值
2020-08-20 06:42:08用实例教你给结构体中数组成员赋值 -
C语言结构体数组的直接赋值及数组的长度计算
2018-04-11 21:13:04一般情况下,对结构体类型的变量或者结构体类型的数组的赋值都是先定义一个结构体类型的变量,然后在对其属性进行赋值。例如: typedef struct Pi { int x; int y; } Pc; int main() { int i; Pc pc[2]; pc[0... -
c语言结构体数组初始化
2021-05-22 13:03:19有关结构体数组初始化的问题struct _m_usmart_nametab usmart_nametab[]={#if USMART_USE_WRFUNS==1 //如果使能了读写操作(void*)read_addr,"u32 read_addr(u32 addr)",(void*)write_addr,"void write_addr(u32 addr... -
C语言 结构体数组详解及示例代码
2021-05-22 10:59:12所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。定义结构体数组和定义结构体变量的方式类似,请看... -
C语言结构体数组详解(带实例演示)
2022-01-06 15:31:52在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。 在C语言中,定义结构体数组和定义结构体变量的方式类似,请看下面的例子: struct stu{ char *... -
结构体数组赋值与取值
2021-12-09 09:17:03C语言结构体数组赋值与取值 -
C语言结构体、结构体数组、结构体指针的用法
2021-05-21 05:22:04一、结构体的定义struct student{ //struct 结构体名long studentID; //数据类型 成员名1char studentName[10]; //数据类型 成员名2int scoreMath; //数据类型 成员名3};二、结构体变量的定义1先声明结构体模板,再... -
C语言结构体数组指针以及函数
2021-05-19 01:31:23结构体数组指针指针变量可以指向一个结构体数组,这时指针变量的值是整个数组的首地址。设 ps 为指向结构体数组的指针变量,则 ps 也指向该结构体数组的第0个元素,ps+1指向第一个元素,ps+i则指向第i元素,这与普通... -
C语言结构体的定义与使用、结构体数组、指向结构体的指针(有代码详解)
2019-06-04 21:58:32结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子: struct stu{ char name[]; //姓... -
C语言结构体数组实现python二维列表功能
2022-02-09 21:22:44需要用到类似python二维列表的功能,查看了下C语言中可用结构体数组实现。 一 结构体 结构体类型的定义 struct 结构体类型名 { 数据类型 成员名1; 数据类型 成员名2; ... 数据类型 成员名3; }; //例如,定义一个... -
C语言使用技巧(七):给一层又一层的结构体数组赋值以及多层数组的赋值
2020-09-22 13:50:591、单层结构体数组赋值 实现源码: #include <stdio.h> #include <stdint.h> #include <string.h> /*直接给结构体赋值*/ typedef struct _SSData { int ID[4]; int arr[2]; } SSData; void ... -
C语言对结构体数组进行赋值打印实例
2020-05-14 11:24:13C语言对结构体数组进行赋值打印 1. 定义一个学生结构体数组有4个学生,通过键盘给他的成员赋值,然后遍历打印 这里的数据类型是 struct student定义一个结构体数组和定义一个普通数据类型,使用方法也类似,只要明白... -
C语言结构体数组的定义
2021-05-22 03:34:37数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。如一个班的学生档案,一个车间... -
C语言结构体数组,结构体数组的定义,结构体数组的输出,结构体的应用
2020-02-29 19:41:52结构体数组 结构体数组格式:声明变量类型 数组名称[数组长度] //定义一个结构体数组名为a,它里面包含有5个元素,每一个元素都是一个结构体变量 Wor a[5]={}; ... -
C语言结构体变量和结构体数组-学习笔记(十六)
2021-07-20 22:54:53一、结构体变量 1、结构体概念 将不同类型的数据组合成一个有机的整体即为结构体。结构体由许多组织在一起的数据项组成,这些数据项不需要属于同一类型。 2、结构体类型及结构体变量定义 (1)结构体类型声明 struct ... -
C语言结构体数组指针的动态分配
2020-03-03 23:44:28刚开始,由于485设备的种类并不是很多,而且主机的每个485口下挂的设备数目,也不是很多,因此采用了静态结构体数组的方式来做设备属性和数值的缓存(Shadow)。但是目前485种类是越来越多,而且规定每个485口下,... -
c语言,结构体数组怎么初始化
2021-05-23 02:53:08结构体数组在定义的同时也可以初始化,例如:structstu{char*name;//姓名intnum;//学号intage;//年龄chargroup;//所在小组floatscore;//成绩}class[5]={{"Liping",5,18,'C',145.0},{"Zhangping",4,19,'A',130.5},{... -
C语言结构体数组
2020-02-27 10:19:48结构体数组,是指数组中的每个元素都是一个结构体。 定义结构体数组和定义结构体变量的方式类似。 示例 struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score...