2012-08-12 212 views
0

我已经写了下面的代码片段来将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个数字的正确输出。所以我认为我的代码中存在一些写入文件部分的问题。 有人可以帮我解决它。

回答

6

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

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