while(!feof(fa))
{
fscanf(fa,"%d%s%s\n",&a1,a2,a3);
}
这样我做过,是不行的。我的“]”符号就是自己占据一行的
!=0请问,怎么不可靠啊?我的文件里在一些数据后都是空行,最后出现个]符号,和您说的应用情况不符啊
这就是不匹配引起的,因为第一个项目是%d ,那么读入']'就是不匹配情况,这就会导致fscanf拒绝读取,最后死循环
这样
:
while(!feof(fa))
{
if (fscanf(fa,"%d%s%s\n",&a1,a2,a3)==0)
{
fgetc(fa); // 把不匹配的字符读掉
}
}
你这个属于文件格式问题,必须满足特定格式才行
是的,我的A文件格式一定。现在总结下:我们可以用以下几种方法:
1,用!=0判断 ,您还没说怎么不可靠那,刚才我试了下,对我们的问题好用。
2,用您刚才给的while(!feof(fa))
{
if (fscanf(fa,"%d%s%s\n",&a1,a2,a3)==0)
{
fgetc(fa); // 把不匹配的字符读掉
}
}
3,把我的%d变成%c估计也成吧?
呵呵
%d换成%c 也不好,两位数以上的数字就会出问题,并且读出来的数据不能当数字使用
用!=0判断 ,您还没说怎么不可靠那,刚才我试了下,对我们的问题好用。
用!=0 如果有两项缺少第三项怎么办, 所以要求格式统一