4

嗨,我真的无法理解这一点。我基本上试图通过将输出数组作为参数传递来从函数返回一个字符数组。这是我到目前为止所拥有的:

功能:

int GetComputerName(char *name, char *ip_address){
    *name = "testing";
    return 0;
}

并称它为:

char comp_name[50];
GetComputerName(&comp_name, serverIP);
printf("\n\n name: %s\n\n", comp_name);

我已经尝试切换和交换 * 和 & 看看什么会起作用,并阅读了指针和东西,但我认为应该发生的事情和实际发生的事情是两件非常不同的事情,现在我认为我比自己更困惑当我开始!哈哈

有人可以帮我解释一下这样做的正确方法是什么吗?!

提前感谢=)

4

1 回答 1

13

这一行:

*name = "testing"; 

无效,因为您将指向“测试”的指针分配给名称指向的字符。您需要将数据复制到缓冲区中。它应该是:

int GetComputerName(char *name, char *ip_address){
    strcpy(name,"testing");
    return 0;
}

甚至更好(以避免溢出):

int GetComputerName(char *name, size_t buff_len, char *ip_address){
    strncpy(name,"testing", buff_len);
    name[buff_len - 1] = '\0';
    return 0;
}

并称之为:

GetComputerName(comp_name, sizeof(comp_name), serverIP);
于 2012-05-06T06:14:35.703 回答