如何检查输入的字符是否为数字?

How to check if the entered character is a digit?

给定的任务是:

输入10个字符。对于输入的每个字符,相应的函数会打印它是否为数字 0-9。(如果有人担心我的 "gets()",我也会使用较旧的编译器,目标是在没有指针的情况下执行此操作。)

到目前为止,我尝试过类似的方法,但由于某种原因它不起作用:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){

    char character[10][1];
    char zero ='0';
    char nine ='9';
    int i;

    printf("Enter 10 characters:\n");

    for(i=0;i<10;i++){
        gets(character[i]);
    }

    for(i=0;i<10;i++){
        if(strcmp(character[i],zero)>=0 && strcmp(character[i],nine)<=0){
            printf("%d. character '%c' is a digit.", i, character[i]);
        }
        else{
            printf("%d. character '%c' is not a digit.", i, character[i]);
        }
        putchar('\n');
    }


    return 0;

} 

我也试过了,但是不能正确输出字符:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){

    char character[10][1], pom[10][1];
    int num_character[10];
    int i;

    printf("Enter 10 characters:\n");

    for(i=0;i<10;i++){
        gets(character[i]);
        strcpy(pom[i],character[i]);
        num_character[i]=atoi(character[i]);
    }

    for(i=0;i<10;i++){
        if(num_character[i]!=0){
            printf("Character '%c' is digit.", pom[i]);
        }
        else{
            printf("Character '%c' is not digit.", pom[i]);
        }
        putchar('\n');
    }

    return 0;

}

isdigit() 在我包含 ctype header.

后也不起作用

你在这里做错了几件事,从不推荐使用 gets 并且 fgets 会将换行符放在最后。

strcmp 的语法是:

int strcmp(const char *s1, const char *s2);

您需要两个字符串作为 strcmp 中的输入,但您正在使用一个字符串和一个字符。

这里,使用字符数组比使用二维数组更好

   #include <stdio.h>

    int main(void)
    {

            char character[10];       //a simple character array
            char zero ='0';
            char nine ='9';
            int i;

            printf("Enter 10 characters:\n");

            for(i=0;i<10;i++){
                    scanf(" %c", &character[i]);     //scan characters
            }
            for(i=0;i<10;i++)
            {
                    if(character[i] >= zero && character[i] <= nine)      //print
                            printf("%d. %c is a digit \n", i+1, character[i]);    
                    else
                            printf("%d. %c is not a digit \n", i+1, character[i]);
            }
            }