c数组中的分段错误,访问字符串中的单个char

时间:2018-12-16 05:04:57

标签: c string char segmentation-fault cs50

我试图操纵字符串中的各个字符,在这种情况下,将第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 个答案:

答案 0 :(得分:4)

"aaaaa"; String Literal ,在大多数系统上都是不可变的,因此password[3] = (char) j;尝试修改不可变的对象会导致SegFault。

相反,

char password[] = "aaaaa";

假设您的"string"typedef的{​​{1}},并且使用复合文字可以得到相同的结果,例如:

char*