gpt4 book ai didi

c++ - 通过指针传递 char 并得到不同的结果

转载 作者:太空宇宙 更新时间:2023-11-04 16:10:40 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com