从文件中写作和阅读

Hug*_*uga 0 c fopen file fgets

我已经编写了以下代码片段来将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;
}
Run Code Online (Sandbox Code Playgroud)

如果我给limit = 3并且我在文件中写了3个数字,例如.47,18836,431.当我从文件中读取并打印它时,我得到6个值,其中前3个是垃圾,接下来的3个是写入的.

如果我注释掉写入部分,只是尝试从文件中读取,我得到的正确输出只有3个数字.所以我认为我的代码中存在一些写入文件部分的问题.有人可以帮我解决这个问题.

Roh*_*han 6

在从文件读取之前重置i0.例如

//your code before
i=0; //reset i
while(fgets(line, sizeof line, file)!=NULL) 
{      
    numbers[i]=atoi(line); 
    i++;
}
//your code after
Run Code Online (Sandbox Code Playgroud)