通过指针传递 char 并得到不同的结果
passing char by pointer and getting a different result
我正在使用 gethostname 获取我正在使用的计算机的名称。在我的主要功能中,我调用它并获得 UBU24-PS-23 我的计算机的正确名称。然后我调用一个函数并使用 gethostname 并得到一个不同的字符串。在我的主要功能中 gethostname returns 0 所以它有效,在我的功能中它 returns -1 所以它失败了。任何想法为什么?这是我的代码
#include <iostream>
#include <sys/unistd.h>
using namespace std;
int funToGetHostName(char * name, size_t len);
int main() {
char hostname[128];
char hostnameFunction[128];
int g = gethostname(hostname, sizeof hostname);
int r = funToGetHostName(hostnameFunction, sizeof hostnameFunction);
cout<<"My hostname: %s\n"<< hostname<< " "<< g<<endl;
cout<<"My hostnameFunction: %s\n"<< hostnameFunction<< " "<< r;
return 0;
}
int funToGetHostName(char * name, size_t len){
return gethostname(name, sizeof len);
}
int funToGetHostName(char * name, size_t len){
return gethostname(name, sizeof len);
}
sizeof len
可能比您预期的要小得多。
相反,您想要:
return gethostname(name, len);
因为您在调用函数时已经传入了缓冲区长度。
有一个错误:
int funToGetHostName(char * name, size_t len){
return gethostname(name, sizeof len);
//^^^^^ This is not 128.
}
你需要
int funToGetHostName(char * name, size_t len){
return gethostname(name, len);
}
我正在使用 gethostname 获取我正在使用的计算机的名称。在我的主要功能中,我调用它并获得 UBU24-PS-23 我的计算机的正确名称。然后我调用一个函数并使用 gethostname 并得到一个不同的字符串。在我的主要功能中 gethostname returns 0 所以它有效,在我的功能中它 returns -1 所以它失败了。任何想法为什么?这是我的代码
#include <iostream>
#include <sys/unistd.h>
using namespace std;
int funToGetHostName(char * name, size_t len);
int main() {
char hostname[128];
char hostnameFunction[128];
int g = gethostname(hostname, sizeof hostname);
int r = funToGetHostName(hostnameFunction, sizeof hostnameFunction);
cout<<"My hostname: %s\n"<< hostname<< " "<< g<<endl;
cout<<"My hostnameFunction: %s\n"<< hostnameFunction<< " "<< r;
return 0;
}
int funToGetHostName(char * name, size_t len){
return gethostname(name, sizeof len);
}
int funToGetHostName(char * name, size_t len){
return gethostname(name, sizeof len);
}
sizeof len
可能比您预期的要小得多。
相反,您想要:
return gethostname(name, len);
因为您在调用函数时已经传入了缓冲区长度。
有一个错误:
int funToGetHostName(char * name, size_t len){
return gethostname(name, sizeof len);
//^^^^^ This is not 128.
}
你需要
int funToGetHostName(char * name, size_t len){
return gethostname(name, len);
}