嗨,我真的无法理解这一点。我基本上试图通过将输出数组作为参数传递来从函数返回一个char数组。以下是我到目前为止的情况:
功能:
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);
我尝试过切换和交换*和&看看会有什么用,并且已经阅读了指针和内容,但我认为应该发生的事情实际上发生了两件完全不同的事情,现在我觉得我比自己开始时更加困惑!洛尔
有人可以帮助我解释一下这样做的正确方法是什么?!
提前致谢=)
答案 0 :(得分:12)
这一行:
*name = "testing";
无效,因为您将指向“testing”的指针分配到名称指向的 char 。您需要将数据复制到缓冲区中。它应该是:
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);
答案 1 :(得分:-1)
您可以将"testing"
分配到*name
中。
只需写:
name = "testing" |( as it is a pointer);
char **n2,n3[20];n2= &name; strcpy(n3,name);