问题将用户输入的字符串传递给需要常量字符*的函数

时间:2011-12-06 16:16:57

标签: c

char hostS[32];
printf("Enter host name: ");
bzero(hostS, 32);
fgets(hostS, 32, stdin);
const char* temp = hostS;
host = gethostbyname(temp);

所以这就是我遇到的问题。 gethostbyname()折旧函数需要const char*,但我希望它使用用户输入。我试过将字符串直接放入函数中并且它可以工作。 I.E. gethostbyname("localhost");。

现在,当我以这种方式进行用户输入时,我得到一个seg错误。

我怎样才能拿到蛋糕并吃掉它?

1 个答案:

答案 0 :(得分:3)

你应该直接传递数组。采用const指针的函数只意味着对于该函数,参数将是一个常量指针。它没有说明在调用时数据是否为常量const。

那就是说,发布的代码应该崩溃听起来很奇怪。

请注意fgets()将保留输入中的换行符/换行符,这可能不是gethostbyname()期望看到的。