Fscanf 打印所有内容,但在 C 中使用代码 1 退出程序

问题描述 投票:0回答:1

我有这个函数可以读取这种格式的一些字符串:

2
伦敦柏林 220 1.5
伦敦 米兰 280 2.5
...

同样的东西应该再读一遍...

2 是其自身之后的字符串数。为此,我有以下功能:

void allocate_info(FILE* fptr, info_t* cities_info, int N){
    int tmp_flights;
    int i = 0;
    while(fscanf(fptr, "%d", &tmp_flights) == 1){
        printf("%d\n", tmp_flights); // this print!!!
        char tmp_departure[LENGTH], tmp_arrival[LENGTH];
        int tmp_price;
        float tmp_duration;
        for(int i = 0; i < tmp_flights; i++){
            fscanf(fptr, "%s %s %d %f", tmp_departure, tmp_arrival, &tmp_price, &tmp_duration);
            strcpy(cities_info[i].departure, tmp_departure);
            strcpy(cities_info[i].arrival, tmp_arrival);
            cities_info[i].price = tmp_price;
            cities_info[i].duration = tmp_duration;
        }
    }
}

“这个印刷品!!!”实际上打印了所有数字,但最终程序失败(错误1)。这是我的主要功能:

int main(void) {
    FILE* fptr = fopen("D:/ap2/lab02ex01/file.txt", "r");
    int N;
    info_t* cities_info = (info_t*)malloc(sizeof(info_t) * N);
    N = read_number_of_cities(fptr); // some other function
    allocate_info(fptr, cities_info, N); // ERROR HERE?!?

    return 0;
}

我对此感到非常困惑,因为它正确打印了所有内容,但程序由于某种原因失败了。请帮帮我。

c pointers struct malloc scanf
1个回答
0
投票

哦,其实谢谢大家评论,我必须在调用函数之前初始化 N 。

© www.soinside.com 2019 - 2024. All rights reserved.