簡體   English   中英

掃描 c 中任意數量的字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM