gpt4 book ai didi

c - Memmove in same pointer for delete multiple whitespaces C

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:24 24 4
gpt4 key购买 nike

当此代码有效时:

 char * k = "asd"; 
char * j = malloc(sizeof(char) * 3);
memmove(j,k,3);
printf("%s",j);

当代码报错时:

 char * k = "asd";
char * j = malloc(sizeof(char) * 3);
memmove(k,k+1,3);
printf("%s",k); // output should be "sd"

我想错了吗?为什么会报错?我打算用它来删除多个空格(“aaa ...... bbb”(点是空格)->“aaa bbb”)

谢谢。

最佳答案

像这样的声明

char *k = "asd";

使字符串文字存储在只读数据段中。 (C 编译器往往不会针对这种情况发出警告,尽管出于历史原因将指针声明为 const char *k = "asd" 会更安全。)

如果你希望字符串内容可以修改,你需要使用数组来代替,比如

char k[] = "asd";

关于c - Memmove in same pointer for delete multiple whitespaces C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29147998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com