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((fp=fopen("D:\\学习\\C语言源码\\devC++\\第13章 文件\\stu_list.txt","w"))==NULL) //以只写的方式打开文件 ,没有该文件的情况下会创建该文件
{
printf("Cannot open file,press any key to exit");
getchar();
exit(0);
}
printf("input data\n");
pp=sa;
for(i=0;i<3;i++,pp++)
{
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr); //先用scanf给结构体的成员变量赋值
fprintf(fp,"%s%d%d%s\n",pp->name,pp->num,pp->age,pp->addr); //然后用fprintf将结构体成员变量的值写入fp所指向的文件stu_list.txt中去
}
fclose(fp); //完成写入文件操作后,关闭文件,使指针fp不再指向该文件

fp=fopen("D:\\学习\\C语言源码\\devC++\\第13章 文件\\stu_list.txt","r"); //以只读的方式打开文件
qq=sb;
printf("name\tnumber age addr\n");
for(i=0;i<3;i++,qq++)
{
fscanf(fp,"%s%d%d%s",qq->name,&qq->num,&qq->age,qq->addr); //先用fscanf将fp所指向的文件stu_list.txt中的值读取到结构体成员变量中
printf("%s\t%5d%3d%s\n",qq->name,qq->num,qq->age,qq->addr); //然后用printf输出结构体变量的值
}
fclose(fp); //完成读取文件操作后,关闭文件,使指针fp不再指向该文件
}

我要如何输入,才能保证4个成员变量都被成功赋值,而不是都输入到了第一个字符串成员变量里

//修改了一点,注意看说明 
#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((fp=fopen("D:\\学习\\C语言源码\\devC++\\第13章 文件\\stu_list.txt","w"))==NULL) //以只写的方式打开文件 ,没有该文件的情况下会创建该文件 
{
printf("Cannot open file,press any key to exit");
getchar();
exit(0);
}
printf("input data\n");
pp=sa;
for(i=0;i<3;i++,pp++)
{
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr); //先用scanf给结构体的成员变量赋值 
//在下在这句多加几个空格,作为输入数据的分隔符,注意输入的人名和地址中应该没有空格,不然会出错 
//或者文件的输入和输出全部指定宽度 
fprintf(fp,"%s %d %d %s\n",pp->name,pp->num,pp->age,pp->addr); //然后用fprintf将结构体成员变量的值写入fp所指向的文件stu_list.txt中去 
}
fclose(fp); //完成写入文件操作后,关闭文件,使指针fp不再指向该文件 

fp=fopen("D:\\学习\\C语言源码\\devC++\\第13章 文件\\stu_list.txt","r"); //以只读的方式打开文件 
qq=sb;
printf("name\tnumber age addr\n");
for(i=0;i<3;i++,qq++)
{
fscanf(fp,"%s%d%d%s",qq->name,&qq->num,&qq->age,qq->addr); //先用fscanf将fp所指向的文件stu_list.txt中的值读取到结构体成员变量中 
printf("%s\t%5d%3d%s\n",qq->name,qq->num,qq->age,qq->addr); //然后用printf输出结构体变量的值 
}
fclose(fp); //完成读取文件操作后,关闭文件,使指针fp不再指向该文件 
}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网