C将字符串传递给函数问题

时间:2017-07-03 01:15:31

标签: c

我在将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]并禁用编译器优化,但似乎都没有解决问题。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

启用编译器警告并删除它们。

我建议你的第三个参数搞砸了。声明一个完整的结构但传入一个指针。堆栈搞砸了,函数无法正确找到传递的参数。

您应该使用适当的struct addrinfo *hints修饰符将最后一个参数设为const