gpt4 book ai didi

c - 如何解决错误 "Segmentation fault (core dumped)"

转载 作者:行者123 更新时间:2023-11-30 14:36:15 26 4
gpt4 key购买 nike

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

void space_to_tab(char *string) {
char str [strlen(string)];
int size = 0;
while(string[size] != '\0'){
if(string[size] == ' ')
str[size] = '\t';
else
str[size] = string[size];
size++;
}
*string = *str;
}

int main() {
char *str = "aa b";
printf("%s\n", str);
space_to_tab(str);
printf("%s\n", str);
}

我刚刚开始使用 C 编程,我想用制表符切换字符串中的空格,但收到错误“段错误(核心转储)”。我相信错误出现在“*string = *str;”中但我不知道如何将一个字符串的指针更改为另一个字符串。

最佳答案

您不应修改文字字符串(即 "aa b"),因为这会导致未定义的行为(因此出现段错误)。相反,您应该像这样修改数组:

char str[] = "aa b";

参见In C, can I initialize a string in a pointer declaration the same way I can initialize a string in a char array declaration?

关于c - 如何解决错误 "Segmentation fault (core dumped)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58186019/

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