0 votes

Lire les coordonnées à partir de fichiers txt en utilisant un programme C

Je veux lire des coordonnées cartésiennes d'un grand ensemble de points à partir d'un fichier .txt dans une matrice ou une structure de données similaire en utilisant un programme C.

Le fichier contient des éléments du type

023    435    1.0
23.5   12.5   0.2
: :     : :   : :
: :     : :   : :

et ainsi de suite...

Il y a environ 4000 de ces coordonnées dans le fichier. La première colonne indique la coordonnée x, la deuxième colonne y et la troisième colonne les coordonnées z. Chaque ligne représente un point. Je veux finalement effectuer des calculs basés sur les coordonnées. Je n'ai qu'une idée de base de la manipulation de fichiers en C.

Des idées ?? Merci de répondre dès que possible!

5voto

Charles Ma Points 12330

Tout d'abord, vous voudrez peut-être utiliser une structure pour stocker chaque point

typedef struct {
   float x;
   float y;
   float z;
} Point;

Ensuite, lisez le fichier dans un tableau de points

  Point *points = malloc(4000 * sizeof *points);
  FILE * fp;
  fp = fopen ("myfile.txt", "r");
  int index = 0;
  while(fscanf(fp, "%f %f %f", &points[index].x, &points[index].y, &points[index].z) == 3)
      index++;
  close(fp);

1voto

Matthew Flaschen Points 131723

Utilisation de sscanf et de GNU getline.

#define _GNU_SOURCE
#include 
#include 

#define MAX 5000

typedef struct coord
{
    float x;
    float y;
    float z;
} coord;

int main(int argc, char *argv[])
{
    if(argc != 2)
        exit(1);
    char *filename = argv[1];

    char *line = NULL;
    int n = 0;

    FILE *coordFile = fopen(filename, "r");

    coord *coords = malloc(sizeof(coord) * MAX);
    if(coords == NULL)
      exit(3); 
    int i = 0;

    while(getline(&line, &n, coordFile) != -1 && i < MAX)
    {
        int items = sscanf(line, "%f %f %f", &coords[i].x, &coords[i].y, &coords[i].z);
        if(items != 3)
            exit(2);
        i++;
    }
    fclose(coordFile);
}

0voto

instanceof me Points 8419

Je dirais fscanf ? (un exemple est donné)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X