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"};
我正在尝试操作字符串中的单个字符,在本例中,将第 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"};