Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C中的文件获取结构_C - Fatal编程技术网

从C中的文件获取结构

从C中的文件获取结构,c,C,我在从文件中读取结构时遇到问题。我觉得这有点明显,但我不能理解。 这是我的密码: while ((c = fgetc(fp)) != EOF) { ungetc(c, fp); fscanf(fp, "%d", &stud_list[i].group); do { c = fgetc(fp); } while (c != '\n' && c != EOF); fgets(stud_list[i].surname, 50, fp);

我在从文件中读取结构时遇到问题。我觉得这有点明显,但我不能理解。 这是我的密码:

while ((c = fgetc(fp)) != EOF) {
    ungetc(c, fp);
    fscanf(fp, "%d", &stud_list[i].group);
    do { c = fgetc(fp); } while (c != '\n' && c != EOF);

    fgets(stud_list[i].surname, 50, fp);
    stud_list[i].surname[strcspn(stud_list[i].surname, "\n")] = 0;

    fgets(stud_list[i].name, 50, fp);
    stud_list[i].name[strcspn(stud_list[i].name, "\n")] = 0;

    fgets(stud_list[i].patronymic, 50, fp);
    stud_list[i].patronymic[strcspn(stud_list[i].patronymic, "\n")] = 0;

    fscanf(fp, "%d", &stud_list[i].year);
    do { c = fgetc(fp); } while (c != '\n' && c != EOF);

    for (j = 0; j < 4; j++)
    fscanf(fp, "%d ", &stud_list[i].marks[j]);
    fscanf(fp, "%d", &stud_list[i].marks[4]);
    i++;
}
我得到的是:

11
аааааааа
аааа
ааач
1990年
5 12
12
МааааСааа аааааааааа ааааааааааач
1893年
5 4
4
0
0


我希望你会发现一个错误。提前感谢!:)

你得到了什么?那个文件是如何编码的?它肯定不是ASCII。“它打印不正确”,我们是否应该认为这意味着输出文件包含文本“不正确”?如果没有,你能告诉我们你得到了什么吗?是windows-1251。它在下面打印相同的结构和过多的零。红色始终是一个错误:不测试fscanf()的返回值。您只需假设输入格式正确。可能不是。
while (stud_list[t].group) {
    fprintf(fp, "%d\n", stud_list[t].group);

    fputs(stud_list[t].surname, fp);
    fputc('\n', fp);
    fputs(stud_list[t].name, fp);
    fputc('\n', fp);
    fputs(stud_list[t].patronymic, fp);
    fputc('\n', fp);

    fprintf(fp, "%d\n", stud_list[t].year);
    for (j=0;j<4;j++)
    fprintf(fp, "%d ", stud_list[t].marks[j]);
    fprintf(fp, "%d\n", stud_list[t].marks[4]);
    t++;
}
11
Иванов
Иван
Иванович
1990
5 5 5 5 5
12
Маяковский
Владимир
Владимирович
1893
5 5 5 5 4