我试图操作字符串中的单个字符,在这种情况下,将第4个"a"更改为"b"。
string password = "aaaaa";
printf("password: %sn",password);
int j = 'b';
password[3] = (char) j;
printf("password: %sn",password);
返回:
密码:aaaaa
分段故障
最后一点:在第一行中,我像声明变量一样声明"string"。这个发明是CS50图书馆允许的——它应该有效,我过去也用过。
提前谢谢。
"aaaaa";
是字符串文字,它在大多数系统上是不可变的,因此password[3] = (char) j;
尝试修改不可变对象,导致SegFault。
相反,
char password[] = "aaaaa";
假设您的"string"
是char*
的typedef
,使用复合文字可以得到相同的结果,例如:
string password = (char[]){"aaaaa"};