我有這個代碼毛刺,我不知道如何解決它。字符串驗證:試圖尋求一個新的字符串時,舊的有無效字符
我想一個字符時間閱讀的隨機字符的字符串inputed。
一旦無效字符被讀取,我想程序停止讀取字符串,並提示用戶輸入一個新的字符串。
該程序也將只讀取和除非串的端部被此5個字符的限制之前遇到了無論串長度存儲到5個字符。
代碼:
int check; //1 = invalid char in string, 2 = otherwise
char c;
char seq[5];
do{ printf("Enter a string of only "+" and "-" \n");
for(i=0; c!=EOF || i<5 ; i++){
scanf("%c",&seq[i]);
if((seq[i] != '\x2b') || (oseq[i] != '\x2d')){
printf("invalid sequence, try again\n");
check=1;
break;
}
check=2;
}
}while(check==1);
請幫幫忙,我知道這是一個簡單的解決方案,但它只是不來找我,我已經搜查/用盡了一切辦法。
我要補充,該代碼繼續閱讀,每到達一個無效字符,它讓用戶輸入一個新的,直到它到達字符串的結束時間將打印出來。
你應該將'for'表達式分割爲'''讀取'c'與'i'的數目分開。也許是'while((c = getchar())!= EOF)'。另外,如果你使用'getchar','c'應該是'int'。然後你需要一個簡單的'最多5個字符的字符隊列來存儲你的5個字符的歷史記錄。有很多例子。 – 2014-09-27 17:02:35
您應該閱讀整行輸入,驗證它,然後決定使用它還是提示用戶輸入另一行。否則,您會如何知道「無效舊」輸入結束以及「更新新」輸入開始的位置。 – 5gon12eder 2014-09-27 17:05:21
我想過這樣做,但無法弄清楚我將如何檢查字符串的每個單獨的字符,以查看它是否有效。 我能想到如何在java(字符串標記器)中做到這一點,但在c中的等效操作是什麼。 – 2014-09-27 17:18:41