赛格。打印字符时出错

时间:2013-06-23 16:52:39

标签: c

这段代码有什么原因不起作用吗?

char* toString(struct number *this) {

  char *res;

  if (!this) {
    res = malloc(sizeof(char));
    *res = '\0';
    return res;
  }

  */
    other working code 
  */

}

当我尝试使用printf打印它时出现“分段错误”:

char *s = toString(NULL); 

printf("%s\n", s);

感谢。

2 个答案:

答案 0 :(得分:3)

我打赌原始资料看起来像这样:

struct number
{
  int i;
}

int main()
{
  char * s = toString(NULL); 

  printf("%s\n", s);

  return 0;
}

char * toString(struct number * this)
{   
  char *res;

  if (!this) {
    res = malloc(sizeof(char));
    *res = '\0';
    return res;
  }

  /*
    other working code 
  */
}

如果是这种情况,请在main()之前添加此原型:

char * toString(struct number *this);

而且:从现在开始,始终使用所有警告进行编译,以防将来再次发生这种情况......: - )

答案 1 :(得分:0)

如果malloc(1)失败,引用的代码将崩溃。我没有看到任何其他原因。请添加更多代码。

无论如何,只需使用调试器(gdb)。让它崩溃并找到原因...