[英]scan arbitrary number of chars in c
我想讀取未知數量的字符,不大於 10。
char word[10];
for( i=0;i<10;i++){
if( !scanf("%c",&word[i])){ //terminate with 0
getchar();
break;
}
}
問題是 number 也是一個字符,所以 if 語句不會被執行。 是否有任何其他解決方案可以終止字符的輸入,例如用 0。
您可以使用do..while
循環。 類似的東西(偽代碼)
int keep_looping = 1;
int counter = 0;
do {
ret = scanf(" %c",&word[counter]);
if (!ret) continue; //can use more cleanup and error check
if (word[counter] == '0') keep_looping =0;
counter++;
}
while (keep_looping && counter < 10)
您可以檢查您剛剛閱讀的字符(在 word[i] 處),如果無效(例如不是字母表)而不是 break。
建議:
char word[10];
if( scanf("%9s",word) != 1 )
{
fprintf( stderr, "scanf for (max 9 char word) failed\n" );
exit( EXIT_FAILURE );
}
使用%9s
因為%s
輸入格式轉換說明符總是將 NUL 字節附加到輸入。
如果輸入少於 9 個字符,則處理得當。
如果輸入大於 9 個字符, 9
修飾符將停止輸入,因此輸入緩沖區不會溢出。 這樣的溢出將導致未定義的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.