我有这个函数可以读取这种格式的一些字符串:
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;
}
我对此感到非常困惑,因为它正确打印了所有内容,但程序由于某种原因失败了。请帮帮我。
哦,其实谢谢大家评论,我必须在调用函数之前初始化 N 。