【问题标题】:writing and reading from file从文件写入和读取
【发布时间】:2012-08-12 16:33:51
【问题描述】:

我编写了以下 sn-p 来将 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 个数字。所以我认为我的代码中有一些问题写入文件部分。 谁能帮帮我。

【问题讨论】:

    标签: c file fopen fgets


    【解决方案1】:

    在读取文件之前将i 重置为0。例如

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多