2017-03-01 28 views
0

假設我在$。/ file ABCDEFG中輸入命令行,並且希望在我的文件中選擇作爲單個字符存儲在數組中。根據我的研究,它應該看起來像這樣,但它沒有給我任何輸出。 nextChar正在調用一個不同的函數,在這裏可以忽略。從命令行讀取字符的C編程

int main(int argc, char * argv[]) { 
    int i = 0; 
    char findThisString[argc]; 
    while(i < argc){ 
     findThisString[i] = argv[i]; 
     i++; 
     printf("%c \n", findThisString[i]); 
    } 

    while(c != EOF){ 
     nextChar(); 
    } 
} 
+0

在'while(c!= EOF){nextChar(); }'什麼是'c',什麼是'nextChar'? –

+0

你是不是指'char * findThisString [argc];'注意這個星星。 '%c'也應該是'%s'。 –

+0

現在這是無關緊要的。在這一點上,我只需要能夠從命令行讀取輸入。但是現在c是一個全局的int set = 0,nextChar是一個空函數 – Brad

回答

0

第一:char findThisString[argc];。不要這樣做。當你聲明一個數組時,編譯器將需要知道數組的大小以找到並保存數組的位置。使用指針,mallocfree。這是一個未定義的行爲,只允許在C99中使用。

秒:findThisString[i] = argv[i];。你將其中的一個聲明爲一個字符串數組(char *),另一個聲明爲一個char數組(char)。

第三位:您是否宣佈nextChar某處?改爲使用getchar

第四:你寫int i=0; while(...){...; i++; }。這不是一個錯誤,但是當你這樣寫這個循環時,最好寫 for(int i=0; i<argc; i++)

+0

'char findThisString [argc];'是一個*可變長度數組*(VLA),雖然對於編譯器來說仍然不正確 –

+0

......並且在任何不是C99的C中都會產生錯誤。 –

+0

編譯器從不危險。如果VLA被實現,它將工作,否則編譯器錯誤。 –