我的Strlen语法写得不好?

时间:2017-03-11 16:12:40

标签: c

如果我在我的程序中写了超过20个字符,它会遍历它并跳过我的if语句if(length> 20)。我做错了什么?

printf("\nEnter Your Product:");
fgets(item_name, 20, stdin);

length = strlen(item_name);
if(length > 20){
    Errorlevel("Input Greater Than 20");
}

2 个答案:

答案 0 :(得分:1)

您可以将fgets设置为最多收集20个字符。因此,if(length > 20)总是错误的。

请参阅documentation about fgets

答案 1 :(得分:1)

fgets会读取所请求的字符数 减去一个 。传递给fgets函数的大小包括终结符

所以无论你写了多少个字,长度都不会超过19个字符。

检查是否输入了多个字符的简单方法是查看最后一个字符(不是字符串终止符)是否是换行符。如果不是,则输入19个或更多字符作为输入。