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

如何将char字符替换C语言指针定义字符串的前两位内容?

C语言字符串替换实现方案

注意:你当前用char * string = "123456"定义的是字符串字面量,C标准规定这类字符串存储在只读内存区域,直接修改其内容会触发未定义行为,绝大多数场景下会直接引发段错误导致程序崩溃。要修改字符串内容,必须先将其存入可写的内存区域(栈内存/堆内存)。

方式1:用栈数组存储(最简单常用,适合短字符串、生命周期仅在当前函数内的场景)

#include <stdio.h>

int main() {
    // 定义可修改的字符数组存储字符串,自动计算长度
    char str[] = "123456";
    char character1 = '7';
    char character2 = '8';

    // 替换前两个字符
    str[0] = character1;
    str[1] = character2;

    printf("%s", str); // 输出结果为783456
    return 0;
}

方式2:用堆内存存储(适合长字符串、生命周期需要跨函数的场景)

如果需要用指针操作内存,可以把原字符串拷贝到堆上的可写空间再修改:

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

int main() {
    char *origin_str = "123456";
    char character1 = '7';
    char character2 = '8';

    // 分配堆内存:长度是原字符串长度+1(预留字符串结束符'\0'的位置)
    char *str = (char *)malloc(strlen(origin_str) + 1);
    // 把原只读字符串拷贝到可写的堆内存
    strcpy(str, origin_str);

    // 指针偏移方式修改内容
    *str = character1;
    *(str + 1) = character2;

    printf("%s", str); // 输出结果为783456

    // 用完释放堆内存,避免内存泄漏
    free(str);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:45:05