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

如何将空格分隔的两位字符组存入数组的每个索引位置?

如何将字符串中的两位字符组存入数组的单个索引

你现在的问题是,字符串s2是类似'12 12 13 14'的格式,当前代码会把每个单独的字符(比如'1'、'2')存进MEM数组,但你需要把每两位作为一组(比如"12")存入数组的一个索引里,之后还要转成整数对吧?

首先看你原来的代码,它是逐个跳过空格后存单个字符,那我们需要调整逻辑,每次处理两个连续的非空格字符,把它们作为一个整体存到MEM的一个位置里。不过要注意,char类型的单个数组索引只能存一个字符,所以我们需要把MEM定义成字符串数组,或者直接在遍历过程中转成整数存入int数组,下面给你两种实用方案:

方案1:存为字符串数组(保留两位字符组)

如果需要先把两位字符组以字符串形式保留下来,后续再转整数,可以这样修改代码:

// 假设MEM定义为 char MEM[100][3]; 每个元素预留3个位置:两位字符+字符串结束符
int i = 0, j = 0;
while (s2[i] != '\0') {
    // 跳过空格
    if (s2[i] == ' ') {
        i++;
        continue;
    }
    // 将当前字符和下一个字符存入MEM的第j个元素
    MEM[j][0] = s2[i];
    MEM[j][1] = s2[i+1];
    MEM[j][2] = '\0'; // 必须添加字符串结束符,否则后续转整数会出问题
    // 指针移动:跳过当前处理的两位字符
    i += 2;
    j++;
}

这样MEM[0]就是"12",MEM[1]是"12",以此类推,后续可以用atoi(MEM[j])轻松转成整数。

方案2:直接转成整数存入int数组

如果不需要保留字符形式,直接存整数会更高效,省去后续转换步骤:

// 假设MEM定义为 int MEM[100];
int i = 0, j = 0;
while (s2[i] != '\0') {
    if (s2[i] == ' ') {
        i++;
        continue;
    }
    // 把两位字符直接转成整数:字符转数字的核心是减去'0'的ASCII值
    int num = (s2[i] - '0') * 10 + (s2[i+1] - '0');
    MEM[j] = num;
    i += 2;
    j++;
}

这个方案一步到位,MEM里直接存储12、12、13、14这些整数,后续可以直接使用。

额外提醒

  • 要确保你的字符串s2格式是严格的两位数字+空格(最后一组后面可以没有空格),如果存在单个数字的情况,需要额外加判断逻辑,避免数组越界访问。
  • 定义MEM时要预留足够的空间,防止溢出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 08:53:20