请告诉我为什么else if
不起作用?
我试图检查输入值是否正确。
如果不是isalpha()
或isdigit()
则会出错!
除了else if
之外,一切正常!
谢谢!
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char name;
int len = 0;
printf("Enter the user name: ");
name = getchar();
while (name != '\n')
{
name = getchar();
int i;
for (i = 0; i <= (sizeof(name)/2); i ++)
{
len++;
}
}
printf("len = %d\n", len);
if((len < 5) || (len > 10 ))
{
printf("Output: input is invalid");
}
else if((isdigit(name)) || (isalpha(name))) //this one does not work
{
printf("invalid");
}
else
{
printf("Output: input is invalid");
return 0;
}
return (0);
}
答案 0 :(得分:0)
由于在name
中读取值之前打印的消息是输入用户名,并且用户名通常是字符串,我想您正在读取字符串而不是单个字符。
如果是这种情况,请更改
char name;
到
char name[20]; //20 is just a number. Make it bigger if you need
因为字符串只是一个字符序列,可以存储在字符数组中。
您可以使用fgets()
阅读name
。
fgets(name, sizeof(name), stdin);
fgets会在遇到\n
时停止阅读,但\n
也会存储在name
中。
因此请将\n
替换为\0
以标记字符串的结尾。
name[strlen(name)-1]='\0';
使用strlen()
查找字符串的长度以存储到len
。
else if((isdigit(name)) || (isalpha(name))) //this one does not work
{
printf("invalid");
}
如果您要检查name
中else if
中输入的最后一个字符,可能会将其重写为
else if(isalnum(name[len-1]))
{
printf("invalid");
}
如果 isalnum()
的参数是字母数字,则
name
将返回非零值。
现在,如果您确实将else if
表示为单个字符,只需要在name
中进行最后输入的字符进行比较。
如果char
是sizeof(char)
,1
必须是for (i = 0; i <= (sizeof(name)/2); i ++)
{
len++;
}
。所以
len++;
等同于
sizeof(name)/2
0
为getchar()
。
请注意,int
会返回char
而非EOF
,如果发生错误,则返回的值为while (name != '\n' && name != EOF)
。
尝试
"styles": [
"content/css/vendor.css",
"content/css/global.css",
"styles.css",
"../node_modules/bootstrap/dist/css/bootstrap.css",
"../node_modules/font-awesome/css/font-awesome.css",
"../node_modules/ionicons/css/ionicons.css",
"_variables.less",
"../node_modules/icheck/skins/flat/blue.css",
"../node_modules/morris.js/morris.css",
"../node_modules/bootstrap-datepicker/dist/css/bootstrap-datepicker3.css",
"../node_modules/admin-lte/plugins/daterangepicker/daterangepicker.css",
"../node_modules/bootstrap3-wysihtml5-bower/dist/bootstrap3-wysihtml5.css"
],
"scripts": [ "../node_modules/jquery/dist/jquery.js",
"../node_modules/jqueryui/jquery-ui.js",
"../node_modules/bootstrap/dist/js/bootstrap.js",
"../node_modules/raphael/raphael.js",
"../node_modules/morris.js/morris.js",
"../node_modules/jquery-sparkline/jquery.sparkline.js",
"../node_modules/jquery-knob/dist/jquery.knob.min.js",
"../node_modules/moment/moment.js",
"../node_modules/daterangepicker/daterangepicker.js",
"../node_modules/bootstrap-datepicker/js/bootstrap-datepicker.js",
"../node_modules/jquery-slimscroll/jquery.slimscroll.js",
"../node_modules/bootstrap3-wysihtml5-bower/dist/bootstrap3-wysihtml5.all.js",
"../node_modules/icheck/icheck.js",
"../node_modules/admin-lte/dist/js/app.js",
"assets/js/scripts.js"]