我写了一个C程序,其中我接受用户的数字输入。但是,如果用户输入了一个字符,那么我必须表明它是一个无效的输入并让用户再次输入一个数字。我该如何实现这一目标?我在Ubuntu中使用gcc编译器编写程序。 Google上的搜索结果建议使用isalpha
函数...但是,我猜这些库中没有它。
我也试过以下......
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void main()
{
system("clear");
if (isdigit(1))
printf("this is an alphabet\n");
else
printf("this is not an alphabet\n");
}
答案 0 :(得分:0)
您需要使用scanf
来获取%d
的用户输入,因为您要扫描整数。在您的情况下,scanf
将在成功扫描时返回1。
int num;
//loop to prompt use to enter valid input
while(scanf("%d",&num)==0) //scanning an integer failed
{
printf("invalid input ! Try again\n");
scanf("%*s"); //remove the invalid data from stdin
}
当您使用isalpha()
中的isdigit()
获取字符输入时,函数%c
和scanf
可用。如果您想使用%c
扫描输入,那么只需检查您在代码中执行的操作,只要您使用%c
获得输入即可。请注意,字符1('1'
)等于整数1。字符的整数值由the ASCII table表示。当用户输入使用%c
的号码的任何其他内容时,您的程序会再次提示用户:
char ch;
while(1){
printf("Enter a number\n");
scanf(" %c",&ch);
printf(Your input is %c\n",ch);
if(isdigit(ch))
{
printf("This is a number\n");
break;
}
else
printf("This is not a number. Invalid input\n");
}
答案 1 :(得分:0)
我尝试了下面的代码,它工作得很好..使用isdigit()
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
void main()
{
system("clear");
char str[1];
printf("Enter a number\n");
scanf("%s",str);
printf("What you entered was %s\n",str);
if(isdigit(str[0]))
printf("this is not an alphabet\n");
else
printf("this is an alphabet\n");
}
答案 2 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include<ctype.h>
int main()
{
char c;
printf("Enter a character: ");
scanf("%c",&c);
bool check=true;
while(check)
{
if( (c>='a'&& c<='z') || (c>='A' && c<='Z'))
{
printf("%c is an alphabet.",c);
check=true;
break;
}
else
{
printf("%c is not an alphabet.",c);
check=false;
}
}
return 0;
}
答案 3 :(得分:-1)
你可以自己写。最好检查数字,因为数字的情况较少。
bool isDigit(char c) {
bool rtn = false;
switch(c) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
rtn = true;
break;
default:
rtn = false;
break;
}
return rtn;
}