【问题标题】:Can't correctly import double numbers into C program无法正确地将双数导入 C 程序
【发布时间】:2014-05-29 17:09:42
【问题描述】:

我有一个这样格式化的 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。它实际上正确导入了除双精度之外的所有数据。我做错了什么?

【问题讨论】:

  • 注意:考虑使用长度和"%s" 来防止溢出。 "%19s %19s %lf %11s %d"

标签: c file-io io


【解决方案1】:

您使用了错误的说明符来读取double。这将调用未定义的行为。你需要%lf

while (5 == fscanf(data_file, "%s %s %lf %s %d", &city_dep, &city_des, &km, &vehicle, &time))
{

【讨论】:

  • 谢谢。开始了 maaad!
猜你喜欢
  • 2014-06-29
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多