C语言字符串什么情况下可以修改

C语言字符串的表示

字符串数组表示:

char str[]="abc";4个元素以'\0'结束

字符串指针表示:

char *str="abc";//有4个元素以'\0'结束

字符串修改

字符串数组修改:

char [] = "hello world";
str[0] = 'H'; // 将数组的第一个字符变为'H'
str[6] = '\0'; // 截断字符串,只留下前6个字符
printf("%s", str); // 输出修改后的字符串

字符指针的修改;
字符串指针,若是指向的内存区域是字符串常量,那么该区域的值不能修改,因为字符串常量在内存中是只读的。若是指向的是动态分配的内存或者栈内存等可写的内存区域,那么指针所指向的内存区域的值是可以修改的。有两种方法:
借用字符串数组:

char str_list[3][10] = {"hello", "world", "test"};
char *ptr;
int i, j;
for (i = 0; i < 3; i++) {
  ptr = str_list[i]; // 指针指向当前字符串的第一个字符
  for (j = 0; j < 10; j++) {
    *ptr = 'a'; // 将当前字符修改为 'a'
    ptr++; // 指针后移,指向下一个字符
  }
}

使用malloc:

	char *p=(char *)malloc(10);//malloc分配10字节首地址给p;
    strcpy(p,"hello");//strcpy(s1, s2); 复制字符串 s2 到字符串 s1。
    printf("%s",p);
    free(p);
    return 0;

错误写法:

	char *str = "hello, world!"; // 字符串指针指向一个字符串常量
    str[0] = 'H'; // 试图修改第一个字符
    printf("%s\n", str);//输出不了一点
    return 0;

总结

如果需要修改字符串,建议使用字符串数组;

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值