判断输入数的ASCII 码是否在48~~57 之间...如果不是就重新输入.
其实是这样的,我想在这段代码里面判断输入的id是不是数字,name是不是字母
#include<stdio.h>
struct student { int id; char name[30]; }str[50]; void main() { char flag = 'n'; int i = 0; do { printf("id\n"); scanf("%d", &str[i].id); //这里判断输入是不是数字,不是的话重新输入,是的话往下
printf("name\n"); scanf("%s", str[i].name);
//这里判断输入是不是字母,不是的话重新输入,是的话往下 i ++; printf("continue?(y/n)"); scanf(" %c", &flag); }while(flag == 'y' || flag == 'Y'); }
[此贴子已经被作者于2004-06-26 16:01:10编辑过]
#include<stdio.h> int Get_id(char*str); struct student { int id ; char name[30]; } str[50]; void main() { char flag='n',tem[6]; int i=0,id1 ; do { while(1) { printf("id\n"); fflush(stdin); gets(tem); //注意这里,gets是不检查输入是否越界,要另行处理 tem[5]='\0'; if(str[i].id=Get_id(tem))break ; printf("有错!\n"); } /*scanf("%d",&str[i].id);*/ printf("name\n"); scanf("%s",str[i].name);//这里比较简单地处理可以用"%[a-z]",也可以象上面的Get_id()一样处理。 i++; printf("continue?(y/n)"); scanf(" %c",&flag); } while(flag=='y'||flag=='Y'); }
int Get_id(char*str) { int a=0 ; while(*str) { if(*str>='0'&&*str<='9')a*=10,a+=*str-48 ; else return 0 ; str++; } return a ; }