错误函数返回c

时间:2014-02-24 00:10:26

标签: c function char return

我需要从函数中读取char *,但我不明白错误。

int main(int argc,char** argv)
{

    char *respuesta;
    respuesta = comunicacion(comando);
    printf("respuesta uno %s",respuesta);

    return EXIT_SUCCESS;
}

char *comunicacion(char data[])
{
        unsigned char c ='d';
        char *respuesta;

        append(respuesta,c);

        return respuesta;
}
void append(char* s, char c)
{
        int len = strlen(s);
        s[len] = c;
        s[len+1] = '\0';
}

这是错误: main.c:24:15:警告:赋值从整数开始,没有强制转换[默认启用]

2 个答案:

答案 0 :(得分:0)

您看到“赋值使得指针来自没有强制转换的整数”警告的原因是您的comunicacion函数缺少原型。发生这种情况时,C假定您的函数返回int,其所有参数也都是int。由于这两个函数都不适用于您的comunicacion函数,因此您的代码具有未定义的行为。

另一个问题是comando未定义。最后,当您致电append时,respuesta未初始化。在append函数中以任何方式使用它都是未定义的行为,因此未初始化的值上的调用strlen是非法的。

最后,请注意data函数中未使用comunicacion参数。这需要更改 - 使用参数,或从函数的签名中删除它。

答案 1 :(得分:0)

  1. 在respuesta = comunicacion(comando); ....编译器假设comunicacion返回一个int,因为它没有看到原型[e或定义。这可能是产生警告的原因。

  2. 在主()中,
  3. ,comando显然还没有被宣布。它已被定义为全局变量吗?

  4. 在comunicacion()中,
  5. ,respuesta永远不会被设置为任何东西。对append的调用对respuesta的值没有影响。