2011-05-27 68 views
3

读取文本文件的数据,我有以下的文本文件:如何在C

ax: 0 
ay: -9.8 
x: 0 
y: 50 
vx: 8.66 
vy: 6 

我想只读的数值用于计算。有没有办法忽略字符串,只读取值作为浮动?

这是我到目前为止有:

FILE *fp; 
FILE *fr; 

fr = fopen("input_data", "rt"); 
fp = fopen("out_file.txt", "w"); 

if(fr == NULL) { 
    printf("File not found"); 
} 

if(fp == NULL) { 
    printf("File not found"); 
}  

float ax = 0, ay = 0, 
     x = 0, y = 0, 
     vx = 0, vy = 0, 
     time = 0, deltaTime = 0; 

fscanf(fr, "%f %f %f %f %f %f %f %f\n", 
     &ax, &ay, &x, &y, &vx, &vy, &time, &deltaTime); 

printf("%f %f %f %f %f %f %f %f\n", 
     ax, ay, x, y, vx, vy, time, deltaTime); 

回答

8

使用这个代替:

fscanf(fr, "ax: %f ay: %f x: %f y: %f vx: %f vy: %f", &ax, &ay, &x, &y, &vx, &vy); 
1

使用%S在弦去。

示例代码:

#include <stdio.h> 

main() 
{ 
    FILE *fp; 
    FILE *fr; 
    char junk[100]; 

    fr = fopen("/tmp/x.txt", "rt"); 

    if(fr == NULL){ printf("File not found");} 

    float ax = 0, ay = 0, x = 0, y = 0, vx = 0, vy = 0, time = 0, deltaTime = 0; 

    fscanf(fr, "%s %f %s %f %s %f %s %f %s %f %s %f\n", junk, &ax, junk, &ay, junk, &x, junk, &y, junk, &vx, junk, &vy); 

    printf("%f %f %f %f %f %f\n", ax, ay, x, y, vx, vy); 

}