C语言> NOOB HERE<我做错了什么?

时间:2018-03-29 11:32:56

标签: c

 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。对不起,如果这看起来或听起来真的很愚蠢,我只是开始学习编程(我正在尝试制作一个对学校项目知识非常有限的注册程序)

1 个答案:

答案 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的值。