当我尝试连接两个字符串时,我遇到了分段错误,如下面的代码所示:
EDITED
//global variables
char *result="hi";
char *temp;
size_t write_data(char *ptr, size_t size, size_t nmeb, void *stream)
{
temp=(char *)ptr;
while(*result)++result;
while(*result++ = *temp++);
return fwrite(ptr,size,nmeb,stream);
}
我在这里做错了什么?
由于
答案 0 :(得分:2)
您正在将值存储到result
指向的地址中,而没有初始化result
以指向可用于存储结果的足够内存。通过将结果初始化为“Hi”,您已为其分配了三个字节。这不足以保存您最后尝试附加的其他数据。
答案 1 :(得分:1)
while(*result)++result; // 1
while(*result++ = *temp++); // 2
在第1行的结尾处,结果到达结尾,在第2行,您正在传递result
结束并取消引用它。
char *result="hi";
result
指向以null结尾的字符串文字hi
。空终止后的位置不是result
访问的有效可访问位置。但是你试图在第2行访问它们。