C、topper段错误

标签 c string cs50 toupper


    char *s1 = "emma";

    char *s2 = s1;

    s2[0] = toupper(s2[0]);

    printf("%s\n", s2);
    printf("%s\n", s1);

我正在用指针搞乱和学习,但我不太明白为什么我在这里遇到段错误。我知道 toupper 函数需要一个字符,但字符串 s2 的第 0 个元素不是一个字符吗?我知道它是一个指针,但它指向一个字符,对吧?这是什么情况?

最佳答案

i don't quite understand why i'm getting a segmentation error here.

代码尝试修改字符串文字。那就是UB。制作一份副本。

UB:未定义的行为 - 可能有效,也可能以明显或奇怪的方式失败。

关于C、topper段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65268109/

相关文章:

c++ - 常量函数参数作为静态数组大小?

c - PIC16LF1824 SPI 从机接口(interface)

c - 何时(不)使用 equal 创建枚举?

c - gcc -c 失败,尽管它已链接到所需的库

c - fgets 大小参数的最佳实现?

java - 结束字符串、递归和搜索事件

string - Powershell,函数在连接字符串(参数)时添加尾随空格

c - 用 C 语言编写一个程序,应用 Luhn 算法进行信用卡验证

C语言while后do使用

c - 哪种代码更简洁、设计更好?