我正在尝试使用'gethostbyname'。如果我将一个主机名直接硬编码到函数调用中,那么效果很好。但是,我试图将用户输入传递给此函数。我相信我的问题可能是因为我传递给函数的数组有很多尾随空格。如何制作一个适合stdin字符串的数组?
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吗?
谢谢!
注意'fgets'并不总是* *包含一个尾随换行(例如,如果线路被截断,或者在文件的最后一行不一端)。 – jamesdlin 2010-10-17 01:32:47
@ jamesdlin:谢谢。我其实提供了适合OP的必要性的简单答案。 OP正在从'stdin'输入并且有换行问题。 – Donotalo 2010-10-17 02:23:42
使用'stdin'很可能会有最终的换行符,但不能保证它(可以按下shell的EOF组合键)。 – jamesdlin 2010-10-17 11:44:48