使用fgets()但程序跳过第一个fgets

时间:2017-10-21 02:04:15

标签: c fgets

听我说,因为我是一个菜鸟,我知道这是一个潜在的重复,但我浏览了这么多页面,我仍然无法弄清楚这一点。我试图取名,但出于某种原因,它不允许我将数据输入到第一个fgets。

void getModuleDetails(struct moduleInfo* moduleInfo)
{

    FILE *fp;
    fp = fopen("moduleInfo.txt", "a+");
    if(fp == NULL)
        exit(1);

    char name[100];
    char code[100];
    int id;
    int ca;
    int exam;

    while((ch =getchar())!= '\n' && ch != EOF)
    {
        printf("Module Name:");
        if(fgets(name, 100, stdin) != NULL)
        {
            fprintf(fp,"%s", name);
        }
    }

    printf("Module Code:");
    if(fgets(code, 100, stdin) != NULL)
        fprintf(fp,"%s", code);

    printf("Module ID:");
    if(scanf("%d", &id) != NULL)
        fprintf(fp,"%d\n", id);

    printf("CA%:");
    if(scanf("%d", &ca) != NULL)
        fprintf(fp,"%d\n", ca);

    printf("Exam%:");
    if(scanf("%d", &exam) != NULL)
        fprintf(fp,"%d\n", exam);

    fclose(fp);
}

正如你所看到的,我删除了printf之后的所有'\ n',添加了getchar来处理\ n。我也知道我不应该将fgets与scanf混合,但这是我们讲师想要的。如果有人能够指出我哪里出错了,那就非常感激了。

0 个答案:

没有答案