我有一个这样格式化的txt文件:
MyDepartureTown MyDestinationTown 123.45 Vehicle 12
我正在尝试将数据导入到我的 C 程序中。这是我用来实现这一目标的代码:
void import_city_info(Grafo *G)
{
char city_dep[20];
char city_des[20];
double km;
char vehicle[12];
int time;
FILE *data_file = fopen("data/routes.txt", "r");
if (data_file == NULL)
{
fprintf(stderr, "Errore. Impossibile aprire il file.\n");
exit(EXIT_FAILURE);
}
while (5 == fscanf(data_file, "%s %s %f %s %d", &city_dep, &city_des, &km, &vehicle, &time))
{
printf("%2.3f\n", km);
//more code...
}
}
当我尝试打印双数时,它输出0.00
。它实际上正确导入了除 double 据之外的所有数据。我做错了什么?
您使用了错误的说明符来读取double
。这将调用未定义的行为。您需要%lf
。
while (5 == fscanf(data_file, "%s %s %lf %s %d", &city_dep, &city_des, &km, &vehicle, &time))
{
Tôi là một lập trình viên xuất sắc, rất giỏi!