2012-08-12 209 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