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

C语言中忽略空白符读取7个数字至数组的优化方案

高效读取带任意空白符的7个数字方案

嘿,你这个需求其实用标准库的scanf()就能完美解决,根本不用额外手动去处理空白符!先给你说最简便的方案——

方案一:直接用scanf()循环读取(最优解)

scanf()在读取整数(%d格式符)的时候,会自动跳过所有空白字符(包括空格、换行、制表符这些),不管用户输入是1234567还是123 45 6 7,甚至是换行分隔的数字,它都能准确识别出每一个整数。

直接上代码:

#include <stdio.h>

int main() {
    int nums[7];
    printf("请输入7个数字(空格、换行随便加都没问题):\n");
    
    // 循环读取7个整数,自动跳过空白符
    for (int i = 0; i < 7; ) {
        // 加入错误处理,防止用户输入非数字内容
        if (scanf("%d", &nums[i]) == 1) {
            i++; // 读取成功才移动索引
        } else {
            printf("输入无效,请输入整数!\n");
            // 清空输入缓冲区里的错误内容,避免死循环
            while (getchar() != '\n');
        }
    }
    
    // 验证结果
    printf("你输入的7个数字是:");
    for (int i = 0; i < 7; i++) {
        printf("%d ", nums[i]);
    }
    putchar('\n');
    return 0;
}

这个方案的优势:

  • 代码极简,完全利用标准库的内置逻辑,不需要自己写空白符过滤代码
  • 效率高,scanf()的底层实现经过优化,比手动处理字符串快得多
  • 自带一定的错误处理能力,能应对用户输入非数字的情况

方案二:读取整行后解析(适合复杂预处理场景)

如果你需要先拿到完整的输入内容再做处理(比如要记录原始输入),可以用fgets()读取整行,再用strtol()逐个解析数字:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    int nums[7];
    char input_buf[256];
    printf("请输入7个数字:\n");
    
    // 读取整行输入
    if (fgets(input_buf, sizeof(input_buf), stdin) == NULL) {
        printf("读取输入失败!\n");
        return 1;
    }
    
    char *ptr = input_buf;
    int num_count = 0;
    
    while (num_count < 7) {
        // 手动跳过空白符
        while (*ptr != '\0' && strchr(" \t\n", *ptr)) {
            ptr++;
        }
        if (*ptr == '\0') {
            printf("输入的数字不够7个!\n");
            return 1;
        }
        // 解析当前数字,strtol会自动跳过前缀空白(其实这里已经跳过了)
        long num = strtol(ptr, &ptr, 10);
        nums[num_count++] = (int)num;
    }
    
    // 输出结果
    printf("你输入的7个数字是:");
    for (int i = 0; i < 7; i++) {
        printf("%d ", nums[i]);
    }
    putchar('\n');
    return 0;
}

这个方案适合需要对输入做额外处理的场景,但代码量比第一种多,而且效率略低(毕竟要手动遍历字符串)。

总结

如果只是单纯要读取7个数字、忽略空白符,第一种用scanf()循环读取的方案绝对是最简便高效的,完全满足你的需求,不需要额外去做空白符去除操作。

内容的提问来源于stack exchange,提问作者dirlik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:50:57