You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:24:04