代码之家  ›  专栏  ›  技术社区  ›  Tikhon

C数组中的分段错误,访问字符串中的单个字符[重复]

  •  2
  • Tikhon  · 技术社区  · 6 年前

    我试图操纵一个字符串中的单个字符,在这种情况下,将第4个“a”改为“b”。

    string password = "aaaaa";
    printf("password: %s\n",password);
    
    int j = 'b';
    password[3] = (char) j;
    printf("password: %s\n",password);
    

    这种回报:

    密码:AAAAA

    分段故障

    最后一个注意事项:在第一行中,我像变量一样声明“string”。这个发明是CS50库允许的——它应该可以用,我以前就用过它。

    提前谢谢。

    1 回复  |  直到 6 年前
        1
  •  4
  •   David C. Rankin    6 年前

    "aaaaa"; 是一个 字符串文字 在大多数系统中是不变的,所以 password[3] = (char) j; 尝试修改不可变对象,导致segfault。

    相反,

    char password[] = "aaaaa";
    

    推定你 "string" 是一个 typedef 属于 char* 使用A 复合文字 允许相同的结果,例如:

    string password = (char[]){"aaaaa"};
    
    推荐文章