连接两个字符串错误

时间:2011-11-02 03:09:12

标签: c concatenation

当我尝试连接两个字符串时,我遇到了分段错误,如下面的代码所示:

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);
}

我在这里做错了什么?

由于

2 个答案:

答案 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行访问它们。