如何将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
相关产品推荐
相关产品推荐

