听我说,因为我是一个菜鸟,我知道这是一个潜在的重复,但我浏览了这么多页面,我仍然无法弄清楚这一点。我试图取名,但出于某种原因,它不允许我将数据输入到第一个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混合,但这是我们讲师想要的。如果有人能够指出我哪里出错了,那就非常感激了。