这个问题已经有了答案:
我试图操纵一个字符串中的单个字符,在这种情况下,将第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库允许的——它应该可以用,我以前就用过它。
提前谢谢。
"aaaaa"; 是一个 字符串文字 在大多数系统中是不变的,所以 password[3] = (char) j; 尝试修改不可变对象,导致segfault。
"aaaaa";
password[3] = (char) j;
相反,
char password[] = "aaaaa";
推定你 "string" 是一个 typedef 属于 char* 使用A 复合文字 允许相同的结果,例如:
"string"
typedef
char*
string password = (char[]){"aaaaa"};