如何检查用户用C语言提供的字符中是否有数字? 要更改的最后一行C代码:):
char name;
do{
printf("What's your name?\n");
scanf("%s\n", name);
}
\\and here's my pseudocode:
while (name consist of a sign (0 or 1 or 2 or 3 or 4 or 5 or 6 or 7 or 8 or 9));
答案 0 :(得分:0)
您需要添加ctype.h
并使用isdigit()
功能。
但是在发布的代码中你还有另一个问题,"%s"
说明符需要一个char
指针,而你传递的是char
,你可能需要的是{{1}像这样的数组
char
请记得加入#include <stdio.h>
#include <ctype.h>
int main()
{
char name[100];
int i;
do {
printf("What's your name?\n");
scanf("%s\n", name);
}
/* and here's my pseudocode: */
i = 0;
while ((name[i] != '\0') &&
((isdigit(name[i]) != 0) || (name[i] == '-') || (name[i] == '+')))
{
/* do something here */
}
}
和ctype.h
答案 1 :(得分:0)
使用isdigit();
原型是:
int isdigit(int c);
类似于检查字符是字母
使用
isalpha()
答案 2 :(得分:0)
这是一种在一个函数调用中测试指定字符的不同方法。
#include <stdio.h>
#include <string.h>
int main()
{
char name[100];
char charset[]= "-+0123456789";
int len;
do {
printf("What's your name?\n");
scanf("%s", name);
len = strlen(name);
}
while (strcspn(name, charset) != len);
printf ("Your name is '%s'\n", name);
return 0;
}
答案 3 :(得分:0)
从用户处获取字符串后,在其上循环以搜索正确的输入。 (即查看是否在数字字符集合中嵌入了数字)。这样的事情会起作用:
假设userInput
是你的字符串:
int i, IsADigit=0;
int len = strlen(userInput);
for(i=0;i<len;i++)
{
IsADigit |= isdigit(userInput[i]);
}
循环中的表达式使用|=
,如果字符串中的任何字符都是数字,它将检测并保持TRUE值。
还有许多其他方法可行 以下系列 字符测试将允许您对其他类型的搜索等进行类似搜索:
isalnum(.) //alphanumeric test
isalpha(.) //alphabetic test
iscntrl(.) //control char test
isalnum(.) //decimal digit char test
isxdigit(.) //hex digit char test
islower(.) //lowercase char test
... The list goes on