如何让C语言读取带空格的32位数字时自动忽略空格?
问题原因
原代码使用scanf("%32s", number)读取输入时,%s格式符默认遇到任意空白字符(空格、制表符、换行符)就会停止读取,因此输入夹带空格时,只能拿到第一个空格前的内容,无法收集完整的32位数字。
解决方案
直接逐字符读取输入,自动跳过所有空白字符,直到凑够32个数字字符即可,修改后的参考代码如下:
int arr[32]; printf("Enter \n"); int count = 0; char c; // 循环直到收集满32个数字 while (count < 32) { c = getchar(); // 跳过所有空白类字符 if (c == ' ' || c == '\t' || c == '\n' || c == '\r') { continue; } arr[count] = c - '0'; count++; }
可选优化
如果需要处理非法输入场景,可以新增字符合法性校验:读取到字符后先判断是否为数字('0'到'9'区间),如果是非法字符可以提示用户重新输入,避免后续转换出错。
内容的提问来源于stack exchange,提问作者Exx
相关产品推荐
相关产品推荐

