我有以下问题:
我在字符指针变量中有一个字符串,我想将字符串中的每个字符移动 1(例如),然后在最后我想将新字符串存储到原始变量中。
我的代码如下:
int main(){
char *string = "Hello";
while (*string != '\0') {
putchar(*string + 1);
string++;
}
return 0;
}
如果我使用 putchar
它会按预期工作,但是当我尝试这样做时:
*string = *string +1;
我得到一个段错误
我也试过这些方法:
*string = &string +1;
*shifted = *string +1;
shifted = *string;
string = *string +1;
但似乎都不起作用,我收到警告或段错误。
有没有一种方法可以重新定义 *string
以在其中包含新的移位字母,以便我以后可以使用它。
非常感谢您的帮助。
最佳答案
正如评论中所指出的,您不能修改string
。这就是为什么它适用于 putchar
而不是当您尝试修改它时。这是做您想做的事情的一种方法。
int main(){
char *string = "Hello";
char *shifted = malloc(strlen(string));
for(int i = 0; i < strlen(string); i++) {
shifted[i] = string[i] + 1;
}
printf("%s %s\n", string, shifted);
free(shifted);
return 0;
}
关于c - 如何在 C 中重新定义字符指针中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58755695/