C语言,结构体中的数组怎么赋值,?

Python08

C语言,结构体中的数组怎么赋值,?,第1张

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'inprogram”其他是乱码,

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

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

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

/*这样可以,*/

//chararr[10]="baobao"

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

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

//printf("%d,%s\n",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=0i<10i++){

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

}

return0

}

你漏写了取地址符“&”,加上后就好了:

#include<stdio.h>

struct student2

{

    int number

    char name[10]

    char sex

float score[3]//3科成绩

}

int main()

{

    int i,j

    struct student2 stu[4]//结构体数组

    printf("input\n")

    for(i=0i<4i++)

    {

scanf("%d %s %c", &stu[i].number,&stu[i].name,&stu[i].sex)

        printf("%d, %s, %c,",stu[i].number,stu[i].name,stu[i].sex)

    }

    return 0

}

输出如下:

#include<stdio.h>

#include<time.h>

#include<string.h>

#include<stdlib.h>

#define N 34

struct student {

int ID

char name

int mscore//数学成绩

int escore//英语成绩

int cscore//语文成绩

}stu[N]

void Input(struct student stu,int n)

char search(int a,char b)

/*float time ()

{

time_t t

struct tm * lt

time (&t)//获取Unix时间戳。

lt = localtime (&t)//转为时间结构。

printf ( "%d/%d/%d %d:%d:%d\n",lt->tm_year+1900, lt->tm_mon, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec)//输出结果

}

*/

/*

void main()

{ int select

FILE *fp

printf("1.学生成绩录入:\n")

printf("2.所有学生成绩显示:\n")

printf("3.学生信息查询:\n")

printf("4.学生信息增添\n")

printf("5.学生信息删除\n")

printf("6.学生信息统计\n")

printf("请输入要执行的操作:")

scanf("%d",select)

switch(select)

{case 1:Input(stu)// f(1)实现对N名学生成绩的录入并储存 

case 2:fp=fopen("static.txt","r")break //显示所有学生成绩 

case 3:search(int id,char nam)break //通过学号或姓名查询 

case 4:f(4)break //添加信息 

case 5:f(5)break //删除 

case 6:f(6)break //统计不及格学生人数和名单,统计各个分数段人数及比例

}

}

*/

void INPUT() {

FILE *fp

fp = fopen("static.txt","wt")

for(i = 0 i < N i++) {

printf("please input the ID name and grades:")

scanf("%d %s %f %f %f",&stu[i].ID,stu[i].name,&stu[i].mscore,&stu[i].escore,&stu[i].cscore)

fprintf(fp,"%d %s %f %f %f\n",stu[i].ID,stu[i].name,stu[i].mscore,stu[i].escore,stu[i].cscore)

}

fclose(fp)

}