for(a=0;a<99;a++){
reg:
system("cls");
printf("\t\t\t~~REGISTER AN ACCOUNT~~\n\n");
printf("\tDesired Username: ");
scanf("%s", &user[a].user);
for(b=0;b<=a-1;b++){
if(strcmp(user[a].user,user[b].user)==0){
printf("USERNAME IS ALREADY TAKEN");
system("pause");
goto reg;
}
}
printf("\tDesired Password: ");
scanf("%s", &user[a].pass);
printf("\tPersonal/Company Name: ");
scanf("%s", &user[a].name);
printf("\tAddress/Location: ");
scanf("%s", &user[a].address);
printf("\tEmail-Address: ");
scanf("%s", &user[a].email);
printf("\tContact Number: 09");
scanf("%d", &user[a].contact);
break;
}
每当我将break
放到最后,系统都不会识别用户名是否被占用,但是当“&#39; break&#39;被删除它可以识别它.. idk这是怎么回事..请帮助..
PS。对不起,如果这看起来或听起来真的很愚蠢,我只是开始学习编程(我正在尝试制作一个对学校项目知识非常有限的注册程序)
答案 0 :(得分:1)
我认为问题在于你的for循环:
第一次迭代:
a = 0;
for(b=0;b<=a-1;b++)
不会是真的
因为b<=a-1
等同于b<=-1
,这不是真的。因此它不会进入b的for循环。它会破坏并退出
相同的过程将重复到a>=2
,
当你没有休息时,b等待b>=2
并开始比较。这就是你看到比较结果的原因。
一个简单的检查是在每次迭代时打印出a和b的值。