全部问题 > 当前问题

为什么改为fprintf(fp,"%d\n",a[i]);后就输出为1了?

如题

ki 2016-11-30 16:59:46

共 1 个回答

最佳答案

2016-11-30 18:09:58

我的理解是这样的,

fprintf(fp,"%d/n",a[i]);

你输入到d1.dat文件里 文件是这样

1

2

3

而后面的fscanf  和 printf 都是%d,那么回车不是整数字符,所以最后输出n只输出1这个整数了。当然有可能解释不是很完全对,但是大体思路应该差不多。




问题来自: 文件的输入和输出
有以下程序
#include <stdio.h>
main()
{ FILE *fp; int a[10]={1,2,3},i,n;
  fp=fopen("d1.dat","w");
  for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);
  fprintf(fp,"\n");
  fclose(fp);
  fp=fopen("d1.dat","r");
  fscanf(fp,"%d",&n);
  fclose(fp);
  printf("%d\n",n);
}
程序的运行结果是 ______ 。
A. 12300
B. 123
C. 1
D. 321
答案:B
解析:首先使用for循环以文本方式向文件中写入123,然后再打开文件读取出来,所以n的值是123。因此选B。