2014-05-22 46 views
1
void trinti1() 
{ 
    int b,lines; 
    char ch[20]; 

    FILE* file = fopen ("Kordinates.txt", "r"); 

    while(!feof(file)) 
    { 
     ch = fgetc(file); 
     if(ch == '\n') 
     { 
      lines++; 
     } 
    } 

    fclose(file); 
} 

你好,大家好我想指望在文件中的行,但似乎fgetc(file)回報int,它不能被轉換爲char。幫助我做錯了什麼?不兼容的類型爲int分配到char

+0

不要使用'FEOF()'來控制你的循環的終止;在你未讀完一個字符之後,它纔會變成真。每個輸入函數都會返回一個結果,告訴您它是否能夠讀取任何內容;用它來決定循環何時完成。 –

回答

2

在您的代碼中ch不是char,它是char[20] - 包含20個字符的數組。由於fgetc返回int(其中包含單個標記charEOF標記),因此無法爲其分配fgetc的結果。

ch的聲明更改爲int ch以解決此問題。您也可以將呼叫放到feof,因爲它發生在錯誤的時間(您在讀操作之後調用它,而不是在讀操作之前)。

for (;;) { 
    int ch = fgetc(file); 
    if (ch == EOF) break; 
    if (ch == '\n') lines++; 
} 
+1

感謝它的工作。 – user3625236

0
void trinti1() 
{ 
    int b,lines=0; 
    int ch; 

    FILE* file = fopen ("Kordinates.txt", "r"); 

    while(EOF!=(ch=fgetc(file))) 
    { 
     if(ch == '\n') 
     { 
      ++lines; 
     } 
    } 

    fclose(file); 
} 
相關問題