在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之前 ,请阅读我的问题
答案 0 :(得分:0)
使用此..也许此帮助。您可以选择修改它。
#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");
}
}
}
答案 1 :(得分:0)
请注意,您正在将字符与整数(数字)进行比较。例如,当您在协同关系中使用数字值1时,ASCII中的字符“ 1”为49。请测试以添加与引号比较类似的单引号,并查看结果是否不同。
最好的问候 埃斯比约