char *pear = "";
int f=0;
while(f != 20) {
pear[f] = 'a';
f++;
}
所以我想在char字符串中添加一个' 为什么这会导致缓冲问题 我不能使用我不喜欢的strcat。
答案 0 :(得分:0)
将字符串初始化为
char * pear = "";
禁止对其进行修改。相比之下,
char pear [] = "";
允许您在之后修改字节0(但不是后续字节)而不会出现错误。但是,由于字符串中的最后一个字节需要为0,因此覆盖它不是一个好主意。
更重要的是,你试图给出最多20个元素的值 - 你需要至少21个元素的空间。另外,请注意终止字符 - 您需要数组中的最后一个元素为0才能成为字符串。现在看起来你只是试图将字符写入数组而不正确地终止它。
如果您事先不知道阵列的大小,可以使用动态内存分配: malloc , realloc (并且不要最后忘记免费。