c - 仅输入 1 到 1000 之间的数字时出现问题

标签 c scanf fgets

在 Ubuntu 上工作

我的代码有问题,但我不知道如何修复。也许有一个功能可以帮助我。

我想输入一个字符串,然后我的程序需要检查它是否是1到1000之间的数字。如果有字母或符号

这是我的代码:

    char tab[200]="";
    int i;
    scanf("%199[^\n]s",tab);
    for(i=0;i<200;i++)
    {
        if(tab[i] >= 'A' && tab[i]<='Z')
        {
            printf("Big letters\n");
        }
        else if(tab[i] >= 'a' && tab[i]<='z')
        {
            printf("Small letters\n");
        }
    }
    if(strlen(tab) == 4 && tab[3] > 0 && tab[2] > 0 && tab[1] > 0 && tab[0] > 1)
    {
    printf("Bigger then 1k\n");
    }
    else if(strlen(tab) > 4)
    {
        printf("Longer then 4 chars\n");
    }

它无法正常工作,而且也不包含符号...

我找到了这样的代码,但我不知道如何使我的号码小于 1001

    char input[MAXINPUT] = "";
    int length,i; 
    int number;



    printf(" id: \n");
    fgets(input, MAXINPUT, stdin); 
    number = atoi(input);
    length = strlen (input);
    for (i=0;i<length; i++)
        if (!isdigit(input[i]))
        {
            printf ("Entered input is not a number\n");
            exit(1);
        } else if (number < 1001)
    printf ("Given input is a number\n");

不确定我是否在这里正确使用了fgets

在你将我发送到here之前 ,请阅读我的问题

最佳答案

使用这个..也许这有帮助。您可以根据自己的选择进行修改。

#include<string.h>              // header file for strlen()
void method()
{
  char tab[200]="";
  int i;
  scanf("%199[^\n]s",tab);
    for(i=0;i<strlen(tab);i++)   // Loops only to the lenght of total vlaues in array
    {
    if(tab[i] >= 65 && tab[i]<=90)          // Ascii Value of Capital Ltrs
    {
        printf("Big letter\n");
    }
    else if(tab[i] >= 97 && tab[i]<=122)      // Ascii Value of Small Ltrs
    {
        printf("Small letter\n");
    }
     else if(tab[i] >= 48 && tab[i]<=57)    // Ascii Value of Numbers
    {
        printf("Number\n");
    }else          // of else other numebrs are all Symbols but can be 
    {
         printf("Symbols\n");
    }

}

}

关于c - 仅输入 1 到 1000 之间的数字时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57411056/

相关文章:

c++ - 如何以编程方式缓慢移动窗口,就好像用户正在做一样?

c++ - sscanf 输入不工作

c - 如果前面的字符串为空,则 fscanf() 无法读取数字

c - scanf 说明符 "n"算什么?

c - fgets、sscanf 和写入数组

c - 如何在结构中制作交叉指针

c - 无法用C计算。你如何用C计算?

c - 已知大小的未指定类型的指针算术

c - 从 fgets() 输入中删除尾随换行符

c - 如何从文件中保存特定长度的字符串并在 C 中使用它