我需要从函数中读取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:警告:赋值从整数开始,没有强制转换[默认启用]
答案 0 :(得分:0)
您看到“赋值使得指针来自没有强制转换的整数”警告的原因是您的comunicacion
函数缺少原型。发生这种情况时,C假定您的函数返回int
,其所有参数也都是int
。由于这两个函数都不适用于您的comunicacion
函数,因此您的代码具有未定义的行为。
另一个问题是comando
未定义。最后,当您致电append
时,respuesta
未初始化。在append
函数中以任何方式使用它都是未定义的行为,因此未初始化的值上的调用strlen
是非法的。
最后,请注意data
函数中未使用comunicacion
参数。这需要更改 - 使用参数,或从函数的签名中删除它。
答案 1 :(得分:0)
在respuesta = comunicacion(comando); ....编译器假设comunicacion返回一个int,因为它没有看到原型[e或定义。这可能是产生警告的原因。
,comando显然还没有被宣布。它已被定义为全局变量吗?
,respuesta永远不会被设置为任何东西。对append的调用对respuesta的值没有影响。