2013-12-16 50 views
0

從文件中讀取後,我得到奇怪的值(我應該是最大的100,但我得到更多),如果有人會解釋什麼時候使用& * **在一個簡單的指針爲什麼couse我的英文不是很好,當它來編程我將不勝感激爲什麼從文件中讀取後會出現奇怪的數字?

這個程序應該從文件中讀取單詞,如果單詞中有一個數字將其更改爲該單詞的第一個字母。如果您對如何更改文件閱讀有任何建議,我也會很感激。我是新來的C(在學校裏,我做了C++,但是非常基本的水平)

# include <stdio.h> 
# define MAX_LEN 100 
int File_reading(); 
int main() 
{char buffer; 
    File_reading(); 
} 

int File_reading() 
{ 
    FILE *stream; 
    char buffer[MAX_LEN + 1]; 
    int i, ch; 

    stream = fopen("data.txt","r"); 

    for (i = 0; (i < (MAX_LEN+1));i++) 
     { 
     if (((ch = fgetc(stream)) != EOF) && (ch != '\n')) 
      { 
      buffer[i] = ch; 
      } 
     } 
    buffer[i] = '\0'; 

    if (fclose(stream)) 
     perror("fclose error"); 
for (i=0;(i<(MAX_LEN+1));i++){ 

    printf("%c \n", buffer[i]); 
    } 
} 

回答

2

你不停止循環時,該文件是結束了,你超越約束陣!這太可怕了。修復循環,像這樣:

char buffer[MAX_LEN + 1]; 
size_t i; 

for (i = 0; i != MAX_LEN; ++i) 
{ 
    int c = fgetc(stream); 
    if (c == EOF) { break; } 
    buffer[i] = c; 
} 

buffer[i] = '\0'; 
+0

謝謝你的幫助 – user3102621

相關問題