gpt4 book ai didi

c - 如何制作一个适合标准输入字符串的数组?

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:53 24 4
gpt4 key购买 nike

我正在尝试使用“gethostbyname”。如果我将主机名直接硬编码到函数调用中,效果会很好。但是,我正在尝试将用户输入传递给此函数。我相信我的问题可能是因为我传递给函数的数组有很多尾随空格。

  void connectHost(char *hostname)
{

int n;

//This works
//n = gethostbyname("irc.ubuntu.com");

//This always returns NULL
n = gethostbyname(hostname);

if(n == NULL)
{
printf("Host Not Found.");
}

}

int main()
{
char hostname[256];
fgets(hostname,255,stdin);
connectHost(hostname);
}

那么只将主机名传递给函数的最佳方法是什么?我不应该使用 fgets 吗?

谢谢!

最佳答案

当您输入 irc.ubuntu.com 作为输入时,它将作为 irc.ubuntu.com\n 存储在 hostname 中>.
您需要删除字符串末尾的 \n,方法是用 nul 字符覆盖它,如下所示:

fgets(hostname,256,stdin);    
hostname[strlen(hostname)-1] = 0;

请注意 fgets 的第二个参数是要读取的最大字符数(包括最后的空字符),因此在您的情况下,您传递的是 256 而不是 255

关于c - 如何制作一个适合标准输入字符串的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3951409/

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