【发布时间】:2011-11-08 23:55:24
【问题描述】:
我正在尝试检测来自 stdin 的 fgets 输入为空(当我按 Enter 而不输入任何内容时)。这是我的程序:
int main()
{
char input[1000];
printf("Enter :");
fgets(input, 1000, stdin);
input[strlen(input) - 1] = '\0';
if(input != '\0'){
printf("hi");
}
return 0;
}
我想做某种条件让它不打印任何东西,但显然这种方式是不正确的。我也尝试了NULL,但没有用。
谢谢!
【问题讨论】:
-
@JamesMcNellis 事实上,无论
input来自哪里,这条线永远不会做任何事情。strlen函数只搜索字符串中的第一个'\0',因此定义为input[strlen(input) - 1] == '\0'。唯一可以改变的是如果input不是以空值终止的,并且在用完程序的地址空间之前不会出现任何'\0's,则引入段错误。