2013-10-29 21 views
0

我花了數小時試圖弄清楚如何從輸入文件中讀取字符串,處理它並在3個不同的輸出文件中編寫元音,輔音和數字。這是我已經達到的代碼:澄清在讀寫文件C

void discriminator(input, output1, output2, output3) { 

    if (string[i] == 'a' || string[i] == 'e' || string[i] == 'i' || string[i] == 'o' || string[i] == 'u' ||) { 
     fputs(string[i], output1); 
     i = i + sizeof(string[i]); 
    } 
    else if (int string[i]) { 
     fputs(string[i], output2); 
     i = i + sizeof(string[i]); 
    } 
    else { 
     fputs(string[i], output3); 
     i = i + sizeof(string[i]); 
    } 
} 

int main() { 

    FILE *inFile = fopen("input.txt","r"); 
    FILE *outVocali = fopen("outputVocali.txt", "w"); 
    FILE *outNumeri = fopen("outputNumeri.txt", "w"); 
    FILE *outConsonanti = fopen("outputConsonanti.txt", "w"); 

    char *string; 
    char *fgets(string, EOF, inFile); 
    int i = 0; 

    while(fgets(string, EOF, inFile)) { 
       discriminator(inFile, outVocali, outNumeri, outConsonanti); 
    } 

    fclose(inFile); 
    fclose(outVocali); 
    fclose(outNumeri); 
    fclose(outConsonanti); 

    return 0; 
} 

這是編譯寫:

esercizio.c:6:9:錯誤:使用未聲明的標識符 '字串' 的在(string [I] = ='a'|| string [i] =='e'|| string [i] =='i'|| stri ... ^

esercizio.c:6:16:error:use of未申報的標識符'i' if(string [i] =='a'|| string [i] =='e'|| string [i] =='i'|| stri ... ^

esercizio.c:6:29:錯誤:使用未聲明的標識符'字符串' if(string [i] =='a'||字符串[i] =='e'||字符串[i] =='我'|| stri ... ^

esercizio.c:6:36:error:使用未聲明的標識符'i' if(string [i] =='a'|| string [i] =='e' || string [i] =='i'|| stri ... ^

esercizio.c:6:49:error:使用未聲明的標識符'string' if(string [i] ==' ''string [i] =='e'|| string [i] =='i'|| stri ... ^

esercizio.c:6:56:錯誤:使用未聲明的標識符'i' if(string [i] =='a'|| string [i] =='e'|| string [i] =='i'|| stri ... ^

esercizio.c:6:69:錯誤:使用未聲明的標識符'字符串' ... =='a'||字符串[i] =='e'||字符串[i] =='我'||字符串[i] =='o'|| st ... ^

esercizio.c:6:76:錯誤:使用未聲明的標識符'i' ...'a'||字符串[i] =='e'||字符串[i] =='我'||字符串[i] =='o'|| 〜應變... ^

esercizio.c:6:89:錯誤:使用未聲明的標識符 的 '字串' ... == 'E' ||字符串[i] =='我'||字符串[i] =='o'||字符串[i] =='u'|| ){ ^

esercizio.c:6:96:錯誤:使用未聲明的標識符'i' ...'e'||字符串[i] =='我'||字符串[i] =='o'||字符串[i] =='u'|| ){ ^

esercizio.c:6:109:error:expected expression ...'e'||字符串[i] =='我'||字符串[i] =='o'||字符串[i] =='u'|| ){ ^

esercizio.c:7:15:錯誤:使用未聲明的標識符'字符串' fputs(string [i],output1); ^

esercizio.c:7:22:錯誤:使用未聲明的標識符'i' fputs(string [i],output1); ^

esercizio。c:8:9:錯誤:使用未聲明的標識符'i' i = i + sizeof(string [i]);^

esercizio.c:8:13:error:使用未聲明的標識符'i' i = i + sizeof(string [i]); ^

esercizio.c:8:24:error:使用未聲明的標識符'string' i = i + sizeof(string [i]); ^

esercizio.c:8:31:error:使用未聲明的標識符'i' i = i + sizeof(string [i]); ^

esercizio.c:10:14:錯誤:預期表達 否則如果(INT串[I]){ ^

esercizio.c:11:15:錯誤:使用未聲明的標識符的'字符串' fputs(string [i],output2); ^

致命錯誤:發出的錯誤太多,現在停止[-ferror-limit =] 生成20個錯誤。

有沒有人有任何指針?

+6

你的具體問題是什麼? – Gangadhar

+0

當我編譯代碼時,跳出有關變量的錯誤。我不知道我是否犯了錯誤,首先是關於指針,因爲在主編譯器中調用過程「discriminator」會告訴我字符串和我沒有聲明變量 –

+0

@RiccardoTosti請閱讀任何簡單的C教程,然後你可以解決這些錯誤的最大值 – Gangadhar

回答

0

它是你的整個程序?什麼是#include行?我看到的一個問題是char *string不分配內存。另外,下一行

while(fgets(stringa, EOF, inFile)) { 

引用不存在的變量stringa。

+0

#include #include