C语言输入的字符串不符合条件,怎么提示错误并重新输入?循环要怎么加上去?

//注册用户void registerUser(){ unsigned char *ch; unsigned char temp[M]; char name[M]; unsigned char password[M]; User user; int i=0; printf("\t\t\t用户注册\n"); printf("\t请输入账号:"); scanf("%s",name); //判断注册的用户是否已存在 for(i=0; i<USER_MAX; i++) { if(0==strcmp(list[i].name ,name)) { printf("\t用户名已存在!\n"); exit(0); } } strcpy(user.name , name); printf("\t请输入密码:"); scanf("%s",password); strcpy(user.password,password); writeToFile(user);}

写一个函数(例如int hf(char*s);),判断字符串是否符合要求,不符合要求就循环,一直到符合要求为止。
循环的方式多种多样,例如下面这一种:
while(scanf("%s",&name)&&hf(name));
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-11
#include<stdio.h>
void main()
{
int a,b,c,max;
while(scanf("%d%d%d",&a,&b,&c)!=3)
printf("oh,no,please input 3 number!")
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf("%d\n",max);
}
解释,scanf()函数的返回值是它读取的值的个数,如果你声明类型是%d那就不会读取其他类型数据。 这是判断输入是否正确的最简单的方法。
第2个回答  2019-04-10
你可以这样写,
bool a=false
while(!a){
输入语句,
判断语句如果成立就顺便设置a=true

第3个回答  2019-04-12

第4个回答  2019-04-12

引入一个变量 duplicated, 检测是否有同名的。

void registerUser()
{
  unsigned char temp[M];
  char name[M];
  unsigned char password[M];
  User user;
  int i = 0, duplicated;
  do {
    duplicated = 0;
    printf("\t\t\t用户注册\n");
    scanf("%s", name);
    for (i = 0; i < USER_MAX; i++) {
      if (0 == strcmp(list[i].name, name)) {
        printf("用户名已存在!\n");
        duplicated = 1;
        break;
        }
      }
    } while (duplicated);
    strcpy(user.name,name);
    printf("\t请输入密码:");
    scanf("%s",password);
    strcpy(temp,password);
}

相似回答