检查用户输入的数字

时间:2014-12-13 23:18:56

标签: c

在我的主要功能中,我有以下内容:

int main(){

    FILE *fp;
    char ch;
    char name[100];

    printf("Create file with name: ");
    scanf("%s", &name);

    fp = fopen(name, "w");
    printf("Enter data to be stored in the file: ");

    while((ch=getchar())!=EOF){
        if(isNumeric(ch)){
            putc(ch,fp);
        }
    }

    fclose(fp);

    return 0;
}

使用getchar()创建文件并将数据(由用户输入到输入流的末尾或Ctrl + Z)存储在其中。我想检查提供的数据是否已经数字,但我是在摇滚。我已经阅读了很多主题,并且所有答案都提示isdigit(),但它不会使用浮点验证数字。这是我的isNumeric()函数:

int isNumeric (const char * s)
{
    if (s == NULL || *s == '\0' || isspace(*s))
      return 0;
    char * p;
    strtod (s, &p);
    return *p == '\0';
}

1 个答案:

答案 0 :(得分:0)

这里的根本问题是isNumeric旨在确定字符串是否为有效数字,但您只提供isNumeric个字符一次。

要解决此问题,您需要一个存储字符的char数组,直到您到达数组应包含完整数字的点。然后使用isNumeric检查数组。