c语言问题fscanf

这是一个通讯录程序的一部分
for(j=0;j<n-1;j++){

fscanf(fp,"%s%s%s%s%s%s",&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);

printf("| %-7s%-12s%-22s%-10s%-20s%-3s |\n",p.name,p.phonenumber,p.address,p.birthday,p.mail,p.relation);/*输出新结构中项目*/

printf("|-----------------------------------------------------------------------------|\n");

}
用循环把已经存进去的东西打印出来,其中fscanf在这句话,每次循环给的字符不是一样的吗,为什么可以把已经存进去的东西都打印出来,我感觉应该是打印出很多行一样的字符。
要是你看不懂我说的 可以看看这个
通讯录:
1 22 333
1 33 222
我想的:
1 22 333
1 22 333
实际:
1 22 333
1 33 222

fprintf(fp,"%s,%c,%d,%f",str,a, c, b); 这个输出格式表明 你的文件1.txt 里的数据 是用 逗号 分 隔。
if((fp = fopen("1.txt","r"))==NULL) 你要打开 读 这个 用 逗号为 分隔符 的文件。

fscanf(fp,"%s,%c,%d,%f", str, &a, &c, &b);
漏写 str, 给你补上,但 这仍不能解决 %s, 的逗号分隔问题。

必须 用下面格式读取逗号分隔的数据:
fscanf(fp,"%[^,],%c,%d,%f", str, &a, &c, &b);
温馨提示:答案为网友推荐,仅供参考
相似回答