使用C程序从txt文件中读取坐标

发布于 2024-07-25 12:28:34 字数 325 浏览 4 评论 0原文

我想使用 C 程序将 .txt 文件中大量点的笛卡尔坐标读取到矩阵或某些此类数据结构中。

该文件有类型

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

等内容...

文件中大约有4000个这样的坐标。 第一列表示 x 坐标,第二列表示 y 坐标,第三列表示 z 坐标。 每行代表一个点。 我最终想根据坐标进行一些计算。 我只是对 C 中的文件处理有一个初学者水平的想法。

有什么想法吗? 请尽快回复!

I want to read cartesian coordinates of a large set of points from of a .txt file into a matrix or some such data structure using a C program.

The file has contents of the type

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

and so on...

There are about 4000 such co-ordinates in the file. First column indicates the x-coordinate, second column y and the third column z coordinates. Each row represents a point. I ultimately want to do some computations based on the co-ordinates. I just have a beginners' level idea of File Handling in C.

Any ideas?? Kindly reply asap!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

时间海 2024-08-01 12:28:34

首先,您可能想使用一个结构来存储每个点

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

然后将文件读入点数组

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

First you might want to use a structure to store each point

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

Then read the file into an array of 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);
尴尬癌患者 2024-08-01 12:28:34

使用 sscanf 和 GNU getline。

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>

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

Using sscanf and GNU getline.

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>

#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);
}
爱人如己 2024-08-01 12:28:34

我会说 fscanf ? (给出了一个例子)

I'd say fscanf ? (an example is given)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文