首页 > 解决方案 > 扫描c中的任意数量的字符

问题描述

我想读取未知数量的字符,不大于 10。

char word[10];
for( i=0;i<10;i++){
    if( !scanf("%c",&word[i])){ //terminate with 0
        getchar();
        break;
    }   
} 

问题是 number 也是一个字符,所以 if 语句不会被执行。是否有任何其他解决方案可以终止字符的输入,例如用 0。

标签: carraysscanf

解决方案


您可以使用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)

推荐阅读