我正在使用gethostname获取正在使用的计算机的名称。在我的主要功能中,我称它为UBU24-PS-23,它是我计算机的正确名称。然后,我调用一个函数,该函数使用gethostname并得到另一个字符串。在我的主函数中,gethostname返回0,因此可以正常工作;在我的函数中,它返回-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);


因为您在调用函数时已经传递了缓冲区长度。

关于c++ - 通过指针传递char并获得不同的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29108996/

10-11 16:36