我寫了一個平衡符號檢查器和堆棧。其他一切正常,我已經完全測試了所有的功能,比如流行推消滅isempty。問題是我的fgets使用情況。fgets在c中的使用出錯
//fgets
char input[10];
printf("Enter a 10 character input for balance: ");
fgets(input, 10, stdin);
是部分「不工作」是下面的代碼
int i = 0;
for (i < 10; i++;){
if (input[i] == '{' || input[i] == '[' || input[i] == '(' || input[i] == '<'){
push(&st2, input[i]);
}
}
我知道我的推送功能是否正常工作,因爲我已經測試了它作爲一個獨立的。像這樣:
push(&st2, '{');
當我嘗試顯示我的堆棧並正確地推送值時工作得很好。 在這一點上,我想或者初始字符數組與fgets是隻是不正確初始化,或者我設法搞砸if/for循環。
當我運行該程序的if語句的條件,如果我鍵入{[(或<到標準輸入。當我嘗試打印我們輸入[10]字符數組我的程序剛剛崩潰藏漢從未謀面。
你檢查與fgets(輸入,10,標準輸入)!= NULL? – CIsForCookies
'input'只能存儲9個字符的輸入(後跟''\ 0''終止符)。 – melpomene