2017-10-21 197 views
0

我有以下代碼。但是,當我嘗試編譯它時,我會在輸入錯誤結束時得到預期的聲明或聲明。 你能告訴我爲什麼我得到這個錯誤?C編程[錯誤]預期聲明或輸入結束時的語句

/* File steelclass.c 

This program reads a yield tensile strength from the file steelclassin.txt, calls the 
function classfunc to determine the corresponding class and then the main program writes 
the strength and corresponding class to a file steelclassout.txt. This continues until the 
end of the input file is reached. 

*/ 

#include<stdio.h.> 

char classfunc(float s); 

int main (void) 
{ 



    float str; 
    char cls; 

    FILE * fin = fopen("steelclassin.txt", "r"); 
    FILE * fout = fopen("steelclassout.txt", "w"); 

    fprintf(fout, "Tensile strength Class\n"); 
    fprintf(fout, "------------------------\n"); 

    while (fscanf(fin, "%f", &str)!= EOF){ 
    cls = classfunc(str); 
    fprintf(fout, "%f     %c\n", str, cls); 


    fclose(fout); 
    system("steelclassout.txt"); 
    return 0; 

} 

char classfunc(float s) 
{ 



    char myClass; 

    if(s >= 1000.0){ 
     myClass = 'A'; 
    }else if(s >= 800.0){ 
     myClass = 'B'; 
    }else if (s >= 600.0){ 
     myClass = 'C'; 
    }else if (s >= 400.0){ 
     myClass = 'D'; 
    }else{ 
     myClass = 'E'; 
    } 

    return myClass; 

} 
+0

如果這正是你試圖編譯代碼,您必須在同時範圍末尾缺少一個右括號。另外,你應該在使用之前檢查'fin'和'fout'。請注意,如果'fscanf'無法讀取浮點數,則返回0. –

+0

使用代碼格式化程序/自動註冊器可以輕鬆避免這樣的問題。如果你的編輯器/ IDE無法做到(即使有一些插件),請使用其他工具/編輯器來完成它,並考慮切換。 – hyde

+2

'#include '看起來不正確。 – wildplasser

回答

0
/* Where is the closing } for this opening bracket?!? 
            | 
            V 
    */ 
while (fscanf(fin, "%f", &str)!= EOF){ 
cls = classfunc(str); 
fprintf(fout, "%f     %c\n", str, cls); 
相關問題