c语言,用fscanf读取文本文件问题

用fscanf读取文本文件并建立链表,然后输出。
最后一行输出乱码。
个人猜想:feof不是很好用。遇到文件结束时,会不会把文件末尾的EOF也读到,所以才输出乱码,应该怎么改进?

第1个回答  2011-03-26
需要清楚一点的是fscanf函数是有返回值的,你需要判断返回值是否等于自己要赋值的变量的个数,只有等于才是有效的调用,否则该调用的结果应该丢弃。
如:
if(1 == fscanf(fp, "%d", &i))
if(2 == fscanf(fp, "%d %d", &i, &j))
等。
第2个回答  2011-03-26
while(fscanf(…))
{
//其他
}

尽量避免feof,否则会有意想不到的错误追问

可是fscanf用过一次以后,就跳到下一个了啊,就漏掉了一个

追答

怎么会漏掉一个呢?
while(fscanf(fp, "%d", &val))
{
//利用val建立链表
}

一个都不会漏掉的
你只在while(fscanf(fp, "%d", &val))中读文件
在{}中利用读取的值建立链表

本回答被提问者采纳
相似回答