C语言结构体数组成员怎么赋值?

供稿:hz-xin.com     日期:2025-01-13
C语言,结构体中的数组怎么赋值,?

(1)用字符常量逐个初始化数组。例如:
char a[8]={'i','l','o','v','e','y','o','u'};
把8个字符依次分别赋给c[0]~c[7]这8个元素。
如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。
如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。
如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。
例如:char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};
这时c数组的长度自动定为9。也可以定义和初始化一个二维字符数组,例如:
char diamond[5][5]={{'','','#'},{'','#','','#'},{'#','','','','#'},
{'','#','','#'},{'','','#'}};用它代表一个菱形的平面图形。
(2)字符串常量初始化数组。例如:
char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};
可写为:char c[]={"C program"};
或去掉{}写为:char c[]="C program";
注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。
char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m','\0'};

扩展资料:其定义的一般形式是:char数组名[数据长度]
例如:
char c[10];
c[0]='I';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';
以上定义了c为字符数组,包含10个元素。
由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:
int c[10];
但这时每个数组元素占2个字节的内存单元,浪费存储空间。
字符数组也可以是二维或多维数组,例如:
char c[5][10];
即为二维字符数组。
初始化
字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。
输入输出
字符数组的输入
(1)用getchar()或scanf()的'%c'格式符对数组进行字符赋值。例如,对于数组a[10]:用getchar()赋值:
for(i=0;i<10;i++)
a=getchar();
用scanf()赋值:
for(i=0;i<10;i++)
scanf("%c",&a);
(2)用scanf()的'%s'格式对数组赋值。还是对于数组a[10]:
scanf("%s",a);

scanf("%s“,&a[0]);
输入”C program“并回车时,a数组会自动包含一个以”\0“结尾的字符串”C program“。
字符数组的输出
(1)用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:
for(i=0;i<10;i++)
a=putchar();
用printf()赋值:
for(i=0;i<10;i++)
printf("%c",a);
输出结果为:
c program
(2)用printf()的'%s'格式对数组赋值。还是对于数组a[10];
printf("%s",a);
输出结果为:
c program
参考资料:
百度百科——字符数组

定义一个函数:
void f(void *d)
{

}
{ReadData,0,0,f}。

intmain(void){

structstudentsbao={};

printf("%d,%s
",bao.id,bao.name);//输出是4224528,空(应该是null)

//structstudentsbao={3,"123"};可以。第一种赋值方法

//strcpy(bao.name,"bao");//可以,

//printf("%d,%s
",bao.id,bao.name);

//bao.name="bao";错误“stray'\351'inprogram”其他是乱码,

//bao.name[0]='a';

//bao.name[0]='/0';

//printf("%d,%s
",bao.id,bao.name);

/*这样可以,*/

//chararr[10]="baobao";

////bao.name=arr;//error"assignmenttoexpressionwitharraytype"

//scanf("%s",bao.name);//可以,

//printf("%d,%s
",bao.id,bao.name);

//所以scanf那一类函数都可以。

//还有就是memcpy函数也是可以的

return0;

}

扩展资料

C语言结构体数组的直接赋值及数组的长度计算:

#include<stdio.h>

//自定义一个字符串的结构体,包含字符串和字符串长度两个变量

typedefstructStr{

charch[100];

intlength;//char数组(字符串)的长度

}myStr;

//刚开始声明变量时每个变量的字符串长度length都为0

//这里以长度为10的数组为例,数组长度是1000

//对第0个到第9个结构体数组的长度同时赋值为0

myStrmyStr1[10]={

[0...9]={

.length=0,

}

};

intmain(){

inti;

for(i=0;i<10;i++){

printf("%d
",myStr1[i].length);

}

return0;

}



给出一下代码,其中使用strcpy函数,头文件为#include<string.h>。
其用法为strcpy(字符数组,需要拷贝的字符串);
#include <iostream>
#include <cstring>
using namespace std;
struct stu
{
char name[8];
char snum[9];
}st[10];
int main()
{
strcpy(st[0].name,"sss");//在结构体中对字符型数组赋值通常是用strcpy函数
strcpy(st[0].snum,"alala");
cout<<st[0].name<<endl;
cout<<st[0].snum<<endl;
return 0;
}

strcpy(stu[0].name,"aa");

能给结构体成员数组这样赋值吗
可以对结构体成员数组进行赋值,主要有三种方式。第一种是按字符逐个赋值,比如定义结构体变量为a,成员为字符数组s[10],则可以使用for循环进行赋值,如:for(i = 0; i < 10; i++) a.s[i] = xxx; 其中,xxx可以是任意字符,例如使用getchar()从终端读取字符。第二种方式是使用strcpy函数进...

结构体中的成员如果是字符数组,有几种赋值方式?
1 按字符赋值。如结构体变量为a, 成员为字符数组s[10]; 那么可以 for(i = 0; i < 10; i ++)a.s[i] = xxx;xxx可以是任意字符。比如getchar(),即从终端读取。2 用strcpy赋值。如 strcpy(a.s, "test");就是将字符数组赋值为"test"。3 用memcpy赋值。如 memcpy(a.s, "test 2",...

C语言结构体数组成员怎么赋值?
intmain(void){ structstudentsbao={};printf("%d,%s\\n",bao.id,bao.name);\/\/输出是4224528,空(应该是null)\/\/structstudentsbao={3,"123"};可以。第一种赋值方法 \/\/strcpy(bao.name,"bao");\/\/可以,\/\/printf("%d,%s\\n",bao.id,bao.name);\/\/bao.name="bao";错误“stray'\\351'in...

结构体数组的赋值方法(常用的三种,包含字符串)
本文主要探讨了结构体数组的三种常见赋值方法,包括按照成员变量赋值、对数组整体赋值以及通过输入赋值。首先,按照成员变量赋值,如使用strcpy函数,需要额外处理且相对繁琐。其次,可以一次性在声明数组时进行整体赋值,但需要注意正确处理结构体嵌套和参数传递问题,避免因缺少完整数组而引发错误。对于有规律的数...

结构体成员数组赋值?
你把scanf("%f",(&(s+i)->score[j]));这个语句改为:scanf("%f",&(s[i].score[j]));这样试试。

C#中如何定义一个结构体数组,怎么赋值使用
public struct GNSS { internal string lon; internal string lat; } 接下来,创建一个长度为24的GNSS结构体数组:GNSS[] gnss = new GNSS[24];对结构体数组进行赋值,可以如下所示:gnss[0].lon = "sss";对于内部定义的结构体,使用internal关键字是合理的,因为这可以确保结构体只能在当前程序...

c语言结构体数组赋值
(1)用字符常量逐个初始化数组。例如:char a[8]={'i','l','o','v','e','y','o','u'};把8个字符依次分别赋给c[0]~c[7]这8个元素。如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现...

请问结构体数组赋值的方法?具体看下面
我来分析一下,struct save_account\/\/保存登录帐户密码 { char account[10];char password[10];}users[10] = {0};这个我理解是定义了一个结构数组users[10], 并初始化为0.也就是说user[]数组有10个元素,每个元素是上面的这样一个结构.下面来看strcpy这个函数,是标准c库函数, 原型是 char * ...

怎么用数组给结构体赋值
short a[80];对于这样的数据,if (sizeof(a) == sizeof(arr))memcpy(arr, a, sizeof(arr));else \/\/输出一些出错信息 就可以了。所有成员加起来是20个short的情况是对齐的。顺便如果那个地方要输出出错信息,那么是编译期就决定要不要输出的,而不是运行期。如果4和80这个数字是可变的,那么...

结构体赋值给数组
= "123";\/*正确,在定义的时候初始化*\/ char a[10];a = "123";\/*错误,不能用“=”直接为字符数组赋值*\/ strcpy(a,"123");\/*正确,使用strcpy函数复制字符串*\/ 所以要对game[0][0].cpart赋值应该用strcpy(game[0][0].cpart,"123");才对。注意要使用strcpy函数要用#include 包含...