我有一个名为test.txt的文件,该文件包含:
<this is a test = 1>
<more tests = 42 and more "34">
<start>10.213123 41.21231 23.15323</start>
<random stuff = "4">
<blah 234>
当我看到<start>
时,我希望将这3个数字扫描成这样的双精度数据之后:
x = 10.213123
y = 41.21231
z = 23.15323
我有点困惑,因为在这里,fgets扫描整条线,我如何将3个数字扫描成双?因为数字可以是各种长度?我这样做是为了打印出它从文件中读取的内容,但我无法绕过它。
void print_lines(FILE *stream) {
char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, stream) != NULL) {
fputs(line, stdout);
}
}
答案 0 :(得分:1)
当您看到ng build --env=prod
时,将3个数字扫描成双倍。您拥有<start>
变量中的行内容,您可以使用strtod将字符串扫描为double。您甚至可以使用line
,但使用strtod更适合错误处理。
sscanf(line, "<start>%lf %lf %lf</start>", &x, &y, &z);