用scanf连续输入字符串与数字时,接收不了数字,这是为什么?请帮帮我,谢谢!

#include<stdio.h>
#define SIZE 1
struct student_type
{
char name[3];
int num;
int age;
char addr[5];
}stud[SIZE];

void save()
{
FILE *fp;
int i;
if((fp=fopen("stu_list","w"))==NULL)
{
printf("Can't open stu_list!\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf("File write error!\n");
}
fclose(fp);
}
void main()
{
int i;
for(i=0;i<SIZE;i++)
scanf("%s,%d,%d,%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);//就是这里输入时,总是让&stud[i].num接受不到我输入的数字!
save();
}
上面是源程序!

如果你的字符串中不含空格,是可以在一行上进行输入的。请看以下的程序和运行结果:

main()

{

 char s[100];

 int x;

 printf("Input Book name & pages:");

 scanf("%s %d",s,&x);

 printf("%s\n%d\n",s,x);

}

追问

你这种方法 我试过了 但是还是不行 主要是涉及到结构体与scanf 我不知道是我程序错了,还是另外。。。
现在用逗号隔开后,就算name数组只有3个空间,也能把所有的数据装下 所以不管我在DOs下输入什么 多少 最后都全部保存在name数组内。

追答

我试过了的,你把数组尺寸开大一点,数字就全有了。
struct student_type
{
char name[30];
int num;
int age;
char addr[150];
}stud[SIZE];

再说原本你的空间也是开得太小了,name[3],你用字符串输入的话,只能存放2个字符啊(还有一个存放'\0'结束标记)。
请你试一下我说的办法。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-22
是不是你宏定义size的问题,你直接把结构体定义成stud,然后再建立数组会不会成功呢?追问

刚试了,还是不行,应该是你的那里的问题,应该是scanf在VC6里输入格式应该怎样去表示的问题。

相似回答