Как читать данные из текстового файла в C - PullRequest
3 голосов
/ 28 мая 2011

У меня есть следующий текстовый файл:

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); 

Ответы [ 2 ]

8 голосов
/ 28 мая 2011

Используйте это вместо:

fscanf(fr, "ax: %f ay: %f x: %f y: %f vx: %f vy: %f", &ax, &ay, &x, &y, &vx, &vy);
1 голос
/ 28 мая 2011

Используйте% 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);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...