在简单文件登录程序中注册时出错

时间:2017-12-15 00:08:22

标签: c

我之前已经问过并做过一些我觉得有用的事情(但我是一个初学者,所以故事落入水中)当我试图注册时,我有一个错误,任何人都可以帮忙吗?我有更多的时间发送它(家庭作业)我不会要求别人为我做,只是为了给我指示

service
  .channels(CHANNEL_SID)
  .members(MEMBER_SID)
  .fetch()
  .then(member => {
    const lastConsumedMessageIndex = member.lastConsumedMessageIndex;
    return service.channels(CHANNEL_SID).messages.list({
      pageSize: lastConsumedMessageIndex,
      limit: lastConsumedMessageIndex
    });
  })
  .then(messages => {
    console.log(messages);
    // do something with unread messages
  })
  .catch(error => {
    console.error(error);
  });

我尝试了很多不同的方式,现在我真的很困惑......

2 个答案:

答案 0 :(得分:1)

  1. scanf("%s", &username);不正确。它应该是scanf("%s", &username[0]);应该集中注意警告,尤其是涉及的数组/指针。
  2. 同样低于2行

    scanf("%s", &pass[0]); scanf("%s", &fullName[0]);

  3. fprintf(p, "%s\n%s\n%s", username, fullName, pass);您将全名写为第二行,但在阅读时,您将第二行读作密码。所以fprintf(p, "%s\n%s\n%s", username, pass,fullName );
  4. 另一个建议是,在打开文件后,应检查文件指针的有效性。出于某种原因,如果它返回NULL,那么你的程序就会崩溃。
  5. 不是简单地尝试编译和获取o / p,调试这个简单代码的最佳方法是用笔和纸坐下来,尝试分析每行发生的事情

答案 1 :(得分:0)

你的代码出现了许多错误。我试着尽可能多地修理。以下应该有效。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int signIn(char username[], char pass[]) {
    FILE *p;
    char user2[30], pass2[30], fullName[50];

    if (!(p = fopen("users.txt", "r+"))) {
        printf("Could not read from users.txt file\n");
        fclose(p);
        return 1;
    }

    int ret = 2;
    while (fgets(user2, 30, p) != NULL) {
        fgets(pass2, 30, p);
        fgets(fullName, 50, p);
        // you have written the fullName to the file as a third line, so you must check for this too
        if ((strcmp(username, user2) == 0) && (strcmp(pass, pass2) == 0)) {
            printf("\nUser and password correct!!!\n");
            printf("Logged in as %s", fullName);
            ret = 0;
            break;
        }
    }

    if (ret == 2)
        printf("\nUser or password incorrect!\n");

    printf("\n\n");
    fclose(p);
    return ret;
}

int signUp(void) {
    FILE *p;
    char username[30], pass[30], fullName[50];

    if (!(p = fopen("users.txt", "w+"))) {
        printf("Could not write to users.txt file\n");
        fclose(p);
        return 1;
    }

    printf("Username: ");
    fgets(username, 30, stdin);

    printf("Password: ");
    fgets(pass, 30, stdin);

    printf("Full name: ");
    fgets(fullName, 50, stdin);

    fprintf(p, "%s%s%s", username, pass, fullName);
    printf("You have signed up!\n");
    fclose(p);
    return 0;
}

int main(void) {
    char username[30], pass[30];
    int choose;

    printf("Welcome to student login system!\n");
    printf(" 1: Sign in\n 2: Sign up\n");
    printf("--------------------------------\n");
    scanf("%d", &choose);
    getchar();

    if (choose == 1) {
        printf("User: ");
        fgets(username, 30, stdin);
        printf("Password: ");
        fgets(pass, 30, stdin);
        return signIn(username, pass);
    }
    else if (choose == 2) {
        return signUp();
    }
    return 0;
}

编辑:我为这个草率的答案道歉,我不在我的主电脑上。此代码适用于阅读1个用户。