#include
int main()
{
int k, n, i, a[6] = { 1,2,3,4,5,6 };
FILE* fp;
fp = fopen("d2.dat", "wb");
for (i = 0; i < 6; i++) fprintf(fp, "%d\n", a[i]);
fclose(fp);
fp = fopen("d2.dat", "rb");
for (i = 0; i < 3; i++) fscanf(fp, "%d%d", &k, &n);
fclose(fp);
printf("%d,%d\n", k, n);
return 0;
}
为什么不是 1,2?
逻辑问题,并非是换行符问题,已作修改
#include <stdio.h>
int main()
{
int k, n, i, a[6] = { 1, 2, 3, 4, 5, 6 };
FILE *fp;
fp = fopen("d2.dat", "wb");
for (i = 0; i < 6; i++)
fprintf(fp, "%d\n", a[i]);
fclose(fp);
fp = fopen("d2.dat", "rb");
/* for (i = 0; i < 2; i++) */ fscanf(fp, "%d%d", &k, &n);
fclose(fp);
printf("%d,%d\n", k, n);
return 0;
}
该回答通过自己思路及引用到各个渠道搜索综合及思考,得到内容具体如下:
这是因为在文件写入时,每个整数都是单独写入一行的,每个整数后面有一个换行符。因此,在读取文件时,应该使用"%d\n"格式字符串来正确地读取每个整数。
在当前代码中,读取文件时使用的格式字符串为"%d%d",这意味着它尝试读取两个整数,但是每个整数后面都没有换行符,所以fscanf()函数会将第一个整数1和第二个整数2都读取到变量k中,而变量n没有被正确地赋值。
要修正这个问题,您可以将读取文件的代码更改为以下内容:
fp = fopen("d2.dat", "rb");
for (i = 0; i < 3; i++) fscanf(fp, "%d\n", &k); // 使用"%d\n"来正确地读取整数
fscanf(fp, "%d\n", &n); // 这里读取的是下一个整数,也需要使用"%d\n"
fclose(fp);
printf("%d,%d\n", k, n);
这样,代码将会正确地输出1,2。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
不知道你这个问题是否已经解决, 如果还没有解决的话:① 所谓程序,就是一组计算机能识别和执行的指令。每一条指令使计算机执行特定的操作。只要让计算机执行这个程序,计算机就会“自动地”执行各条指令,有条不紊的进行工作。一个特定的指令序列,用来完成一定的功能。
②为了使计算机系统能实现各种功能,需要成千上万个程序。这些程序大多数是由计算机软件设计人员根据需要设计好的,作为计算机的软件系统的一部分提供给用户使用。此外用户还可以根据自己的实际需要设计一些应用程序。