C语言中struct结构体含有很多类型数据时如何一个scanf输入所有类型的数据

如下:
struct student {
int num;
char name;
float score;
}
如何在main函数中一个scanf中一次输入所有数据类型
for (i=0;i<10;i++)
scanf ("%d %c %lf ",&sch[i].num ,&sch[1].name ,&sch[i].score );
上面哪错了,输出时只有num是我输入的,别的都是乱数。

for (i=0;i<10;i++)
scanf("%d %c %f",&sch[i].num,&sch[i].name,&sch[i].score ); 就可以了。
float score,float 型输入格式 是 %f 不是 %lf。
&sch[1].name 里的 1 改用 i.
注意,你的 name 只允许 1个字符。若多个字符 就会出错。
如果 改为:
struct student {
int num;
char name[20]; // 用字符串,而不是单个字符
float score;
} sch[10];
输入格式 name 用 %s, 参数 sch[i].name,没有 &号:
for (i=0;i<10;i++)
scanf("%d %s %f",&sch[i].num, sch[i].name,&sch[i].score );追问

为什么 sch[i].name 前不用取地址符 & ,还有 %s 和 %c 的差别在哪里

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-11-28
&sch[1].name //写成1了,应该是i

C语言中struct结构体含有很多类型数据时如何一个scanf输入所有类型的...
float score,float 型输入格式 是 %f 不是 %lf。&sch[1].name 里的 1 改用 i.注意,你的 name 只允许 1个字符。若多个字符 就会出错。如果 改为:struct student { int num;char name[20]; \/\/ 用字符串,而不是单个字符 float score;} sch[10];输入格式 name 用 %s, 参...

C语言结构体成员变量的中字符串型数值型在一个scanf函数里输入的...
\/\/修改了一点,注意看说明 #include <stdio.h> #include <stdlib.h>struct stu{char name[10];int num;int age;char addr[15];}sa[3],sb[3],*pp,*qq;\/\/创建结构体类型struct stu的同时,定义结构体数组sa、sb,定义结构体指针变量 pp、qq。 int main(){FILE *fp;char ch;int i;if...

C语言中怎么给一个结构体用scanf进行赋值?
char name[10];int score[3];}Stu[5]; \/\/初始化,一共5个学生的数据 void getScore(struct student * p) \/\/函数:向结构体读取分数,一共三门课 { int i, j;for (i = 0; i < 5; i++)for (j = 0; j < 3; j++)scanf_s("%d", (&(p+i)->score[j]));} void...

C语言结构体数组 的输入方式
C 语言中,结构体(struct)是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。定义与声明 结构体...

怎么用SCANF给结构体赋值啊,我赋值后只有输出了第一个
结构体不可以用scanf,strcpy,memcpy等函数赋值。但是一般socket编程中能用到。方式为两边定义一样的结构体(以你的结构体为例)memcpy(buff,ps,sizeof(ps));send(buff);接收端可以recv(ps)直接用结构体接收。但是还需说明一点 这样用 结构体中不可以有指针。

C语言中利用scanf语句输入多个值的问题
1、有一个很严重的错误,输入字符数组的两个 scanf("%d %s %c %c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);scanf("%s",&person[i].category.position);2、把这两行中字符数组输入时前面的&符号去掉,对字符数组输入本身就是地址,不要加&,改成这样 scanf("...

C语言中如何输入结构体类型数据。
分开来输入,如:student.a=10;scanf("%s",student.name);student为变量名!

c语言 结构体(struct)数据录入为什么失败
因为scanf("%d %d %d",&stu_first.birthday.year,&stu_first.birthday.month,&stu_first.birthday.day);当用户输入数据再输入了回车既是输入了\\n,所以当运行到while((*ptr++=getchar())!='\\n');就相当输入了空字符 你可以在scanf函数后再加个getchar();就能正确的跑了。

...体类型的指针引用成员变量,给成员变量用scanf怎么赋值?
include <stdio.h>\/* 声明结构体 myStruct *\/struct myStruct{ int x; char s[100];};void main(){ myStruct ms; \/*结构体指针*\/ myStruct *p = &ms; \/** * scanf参数列表需要各个变量的地址。下面的语句中: * p->x通过指针取出了成员变量x;&(p->x)...

c语言中结构体struct中定义结构体后 成员表中的 name[10]是什么意思...
struct STUDENTSRECORD { char name[10];int age,class;} mStudent[20];这个结构中name[10]表示此结构中包含一个字符型数组,名为name可以存放10个字符型数据,经常存放字符串字符串最长9个字符以字符'\\0'结尾。输入1号学生姓名:scanf("%s",mStudent[0].name);输出1号学生姓名:printf("%s\\n"...

相似回答