从文件中扫描两个带有连字符的浮点数
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);
我正在尝试从一个 .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);