1个回答
展开全部
原因:
fscanf(fp,"%d%d",&k,&n);
这句语句造成的。
事实上,无论是 scanf() 函数 还是 fscanf() 函数, 在获取数据的时候,都是严格按照双引号里面的格式来获取数据和分隔数据的。
对于上面这句语句里的格式,输入的时候一般都是在两个值之间加上空格来避免 scanf() 把数据搞混的。
所以,上面的整个程序代码里,先前通过
fprintf(fp,"%d",i);
输入数据到文件的时候,数字1、2、3实际上是紧紧挨在一起的,也就是说,d1.dat 文件的数据是下面这样的:
123
所以,当后面的
fscanf(fp,"%d%d",&k,&n);
从文件中读取数据的时候,是把 123 当作一个int型的值的整体来读入并交给变量 k 的,而把文件里的 123 读取完之后,文件就结束了,所以就没有、也无法给变量 n 赋值,所以变量 n 就保持了初始值 0。
然后,printf()输出,就是 123 0 了。
延伸:
保持上面程序代码中的 fscanf() 语句不变,而要从文件中读取到数据 1、2 分别赋值给变量 k、n 的话,可以简单地在前面的 fprintf() 函数里加一个空格,
fprintf(fp,"%d",i);
// 这句,在%d后面增加一个空格就可以了
fprintf(fp,"%d ",i);
如有帮助,烦请点采纳,谢谢!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询