C、toper segmentation fault
C, toupper segmentation fault
char *s1 = "emma";
char *s2 = s1;
s2[0] = toupper(s2[0]);
printf("%s\n", s2);
printf("%s\n", s1);
我正在研究指针,但我不太明白为什么我会在这里遇到分段错误。我知道 toupper 函数需要一个字符,但字符串 s2 的第 0 个元素不是一个字符吗?我知道它是一个指针,但它指向一个 char 对吗?这是怎么回事?
i don't quite understand why i'm getting a segmentation error here.
代码试图修改字符串文字。那就是UB。复制一份。
UB:未定义的行为 - 可能有效,可能会以明显或奇怪的方式失败。
char *s1 = "emma";
char *s2 = s1;
s2[0] = toupper(s2[0]);
printf("%s\n", s2);
printf("%s\n", s1);
我正在研究指针,但我不太明白为什么我会在这里遇到分段错误。我知道 toupper 函数需要一个字符,但字符串 s2 的第 0 个元素不是一个字符吗?我知道它是一个指针,但它指向一个 char 对吗?这是怎么回事?
i don't quite understand why i'm getting a segmentation error here.
代码试图修改字符串文字。那就是UB。复制一份。
UB:未定义的行为 - 可能有效,可能会以明显或奇怪的方式失败。