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

Segmentation fault in c array, access to individual char in a string

我正在尝试操作字符串中的单个字符,在本例中,将第 4 个 'a' 更改为 'b'。

string password = "aaaaa";
printf("password: %s\n",password);

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

这个returns:

密码:aaaaa

分段错误

最后一点:在第一行中,我将 'string' 声明为一个变量。 CS50 库允许这种设计 - 它应该可以工作并且我过去使用过它。

提前致谢。

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

相反,

char password[] = "aaaaa";

假设你的 "string"char*typedef 使用 复合文字 允许相同的结果,例如:

string password = (char[]){"aaaaa"};