从文件中扫描两个带有连字符的浮点数

Scanning from file two floats with hyphen between

我正在尝试从一个 .txt 文件中扫描,其中包含两个浮点数,它们之间有一个连字符。如果连字符被删除,代码就可以工作,但我正在为学校目的做一份工作,需要连字符。

该函数应该将信息从文件加载到数组。

代码如下:

#include <stdio.h>
#include <estruturas.h>
#include <funcoes.h>

void loadmedicos(medico *pmedico,int total){

    FILE *f;
    medico x; //medico is a typedefined struct with 2 floats
    f=fopen("medicos.txt","rt");

    if(f==NULL){
        printf("Ocorreu um erro ao abrir 'medicos.txt'!\n\n");
    }
    for(int i=0;i<total;i++){
        fscanf(f,"%f",&x.horarioentrada);
        fscanf(f,"%f",&x.horariosaida);
        *(pmedico+i)=x;
    }

    fclose(f);
}

如果 .txt 包含:

19.30 20.30

然后它会正确读取并输出这些数字。如果文件包含:

19.30-20.30

不会读取第二个数字。为什么会这样,我该如何解决?

您需要将“-”字符作为 scanf 格式的一部分。这样,字符将被跳过:

fscanf(f, "%f-%f", &x.horarioentrada, &x.horariosaida);