我编写了以下代码段以将 n 个随机数写入文件。写入后,我从文件中读取并将数字存储在数组中。我面临的问题是,当我从文件中读取时,我得到了额外的数字。
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int limit,i=0;
int numbers[100];
char line[100];
printf("Enter the number of random number to be generated(max 1000)");
scanf("%d",&limit);
FILE *fpi;
fpi=fopen("input.txt","w");
for(i=0;i<limit;i++)
{
fprintf(fpi,"%d\n",rand());
}
fclose(fpi);
FILE *file;
file = fopen("input.txt", "r");
while(fgets(line, sizeof line, file)!=NULL)
{
numbers[i]=atoi(line);
i++;
}
printf("%d\n\n",i);
int totalNums = i;
for (i=0 ; i<totalNums ; i++)
{
printf("%d\n",numbers[i]);
}
fclose(file);
return 0;
}
如果我给 limit=3 并向文件写入 3 个数字,例如 47,18836,431。 当我从文件中读取并打印它时,我得到 6 个值,其中前 3 个是垃圾值,接下来的 3 个是已写入的值。
如果我注释掉写入部分并尝试从文件中读取,我只会得到 3 个数字的正确输出。所以我认为我的代码写入文件部分存在一些问题。 谁能帮我解决这个问题。
最佳答案
在读取文件之前将i
重置为0
。例如
//your code before
i=0; //reset i
while(fgets(line, sizeof line, file)!=NULL)
{
numbers[i]=atoi(line);
i++;
}
//your code after
关于c - 写入和读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11923847/