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

C语言不使用string库实现字符串空格替换为'XXX'的方法

现有代码存在的问题
  • 遇到第一个空格替换后直接执行break,只会处理第一个空格,无法遍历整个字符串
  • 原字符串下标和输出缓冲区buff的下标没有做偏移处理:1个空格要替换为3个字符,替换后buff的索引会比原字符串多2*已处理空格数,直接共用下标会出现字符错位
  • 没有处理空格后的剩余字符拷贝逻辑,也没有给buff添加字符串结束符\0,输出会出现乱码
修复后的实现代码
char buff[100];

char *my_func(char *arr) {
    // 分别维护原字符串、输出缓冲区的下标,避免替换导致的下标错位
    int arr_idx = 0, buff_idx = 0;
    while(arr[arr_idx] != '\0') {
        if(arr[arr_idx] == ' ') {
            // 空格替换为三个X
            buff[buff_idx++] = 'X';
            buff[buff_idx++] = 'X';
            buff[buff_idx++] = 'X';
            arr_idx++;
        } else {
            // 非空格字符直接拷贝
            buff[buff_idx++] = arr[arr_idx++];
        }
    }
    // 补充字符串结束符,保证输出正常
    buff[buff_idx] = '\0';
    return buff;
}

int main()
{
    char arr[]="This is my string";
    my_func(arr);
    printf("%s",buff);
    return 0;
}

以上代码全程没有使用string库相关函数,测试输出结果为ThisXXXisXXXmyXXXstring,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:06:01