我试图操纵字符串中的各个字符,在这种情况下,将第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库允许这种创新-它应该可以工作,并且我在过去已经使用过。
谢谢。
答案 0 :(得分:4)
"aaaaa";
是 String Literal ,在大多数系统上都是不可变的,因此password[3] = (char) j;
尝试修改不可变的对象会导致SegFault。
相反,
char password[] = "aaaaa";
假设您的"string"
是typedef
的{{1}},并且使用复合文字可以得到相同的结果,例如:
char*