在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C/ c語言動態(tài)結(jié)構(gòu)體數(shù)組問題

c語言動態(tài)結(jié)構(gòu)體數(shù)組問題

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

// 課程信息
typedef struct {
    long id; // 課程編號
    char *name; // 課程名稱
    int type; // 課程性質(zhì)
    int hours; // 學時
    int teaching_hours; // 授課學時
    int experiment_or_machine_hours; // 實驗或上機學時
    float credit; // 學分
    int semester; // 開課學期
} course;

// 通過學分查詢課程
void queryByCredit() {
    float credit;
    int flag, len = 0;
    course *matching_courses = (course *) malloc(sizeof(course));
    printf("%ld", sizeof(course));

    FILE *fp = getFile("../course_info.txt", "r");
    // 初始化課程信息結(jié)構(gòu)體
    course course_temp;
    course_temp.name = (char *) malloc(100 * sizeof(char));

    while (1) {
        printf("請輸入學分: ");
        scanf("%f", &credit);

        while (!feof(fp)) {
            // 讀取新的課程信息
            readCourseInfo(fp, &course_temp);

            // 學分匹配
            // 由于學分為浮點型小數(shù), 因此比較時不能準確比較, 因此當小于某小數(shù)時則成立
            if (fabsf(course_temp.credit - credit) < 0.01) {
                // matching_courses[len++] = course_temp;
                *(matching_courses + sizeof(course_temp) * len++) = course_temp;
                matching_courses = (course *) realloc(matching_courses, sizeof(course));
            }
        }

        // 打印表格
        showLine();
        showCourseInfoHeader();
        for (int i = 0; i < len; ++i) {
            printCourseInfo(*(matching_courses + 40 * i));
        }
        showLine();

        flag = isContinue();
        if (flag == BACK)
            break;
    }
}

在我的系統(tǒng)(ubuntu 18.04)中
為什么這里matching_courses[len++]的地址每次都只增加28,而實際上他應(yīng)該加40才是正確的

回答
編輯回答
眼雜

0x28 == 40

2017年1月26日 09:53