#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'结束标记)。
请你试一下我说的办法。
刚试了,还是不行,应该是你的那里的问题,应该是scanf在VC6里输入格式应该怎样去表示的问题。