在char中查找数字

时间:2015-01-20 14:49:27

标签: c text char

如何检查用户用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));

4 个答案:

答案 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