我在将char *传递给C中的函数时遇到了问题。
我有一个方法dns_magic
,其中一个参数是char *addr
。另外,我有一个char temp[20]
,其中包含一个字符串(通常类似于irc.rizon.net
)。在我致电dns_magic(temp)
之前,我做了printf("Temp: %s", temp)
并按预期打印。在dns_magic
的第一行,我调用printf("Addr: %s", addr)
,它不打印任何内容(就好像字符串为null)。
以下是代码的相关部分:
printf("Temp: %s", temp);
res = dns_magic(temp, conf->port, &hints);
和
struct addrinfo *dns_magic(char *addr, int port_i, struct addrinfo hints)
{
printf("Addr: %s", addr);
有人可以帮我告诉我我做错了什么吗?我尝试更改dns_magic以获取char [20]并禁用编译器优化,但似乎都没有解决问题。
感谢任何帮助。
答案 0 :(得分:1)
启用编译器警告并删除它们。
我建议你的第三个参数搞砸了。声明一个完整的结构但传入一个指针。堆栈搞砸了,函数无法正确找到传递的参数。
您应该使用适当的struct addrinfo *hints
修饰符将最后一个参数设为const
。