c语言中的错误函数返回

c语言中的错误函数返回,c,function,char,return,C,Function,Char,Return,我需要从函数中接收字符*,但我不明白是什么错了 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

我需要从函数中接收字符*,但我不明白是什么错了

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:警告:赋值从整数生成指针而不进行强制转换[默认启用]

看到“赋值从整数生成指针而不进行强制转换”警告的原因是您的
Comunication
函数缺少原型。发生这种情况时,C假设函数返回一个
int
,并且它的所有参数也是
int
。由于您的
comunicacion
函数的上述两项都不正确,因此您的代码具有未定义的行为

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

最后,请注意,
数据
参数在
通信
函数中未使用。这需要更改-要么使用参数,要么将其从函数签名中删除

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

  • 在main()中,comando显然没有被声明。它是否已经被定义为全局变量

  • 在comunicacion()中,respuesta从未设置为任何值。对append的调用对respuesta的值没有影响


  • 显示
    append
    的源代码。我把它放在主要功能char*comunicion(char data[])之前;对于协议和编译,非常感谢。