qpwoeiruyt 发表于 2019-10-14 22:52:12

C语言读取文件中的坐标

大佬请教一下怎么让txt的坐标 读取到结构体里面????



在 data.txt 里面
3
5.22   4.55
3.25   3.33
1.22   6.77

第一行 3 表示有三个坐标   第二到四行分别是各个坐标的xy值


以下是我的c文件.....

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

typedef struct point point;
struct point
{
float a;
float b;
};

void sort(point nuage[],int n)//坐标排序的函数
{
    int i,j;
    float x,y;
    for(i=0;i<n-1;i++){   // Bubble Sort comparer avec n-1
      for(j=0;j<n-1-i;j++){
            if (nuage.a>nuage.a){
                x=nuage.a;y=nuage.b;
                nuage.a=nuage.a;nuage.b=nuage.b;
                nuage.a=x;nuage.b=y;
            }else if(nuage.a==nuage.a && nuage.b>nuage.b){
                x=nuage.a;y=nuage.b;
                nuage.a=nuage.a;nuage.b=nuage.b;
                nuage.a=x;nuage.b=y;
            }}}
    printf("-----------sort----------\n");
    for (i=0;i<n;i++)
    {printf(" %f %f \n",nuage.a,nuage.b);}
}

void nuage() //
{
int i,num;
char buf;
FILE *f;
f=fopen("data.txt","r");
fgets(&buf,256,f);
num=buf;
point nuage;

后面这里要怎么把文件的坐标读取进去呢??


sort(nuage,num); //最后再排序
fclose(f);
}

int main(){
    nuage();
    return 0;
}

superbe 发表于 2019-10-14 22:52:13

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

typedef struct   //这里有修改
{
        float a;
        float b;
}point;

void sort(point nuage[],int n)//坐标排序的函数
{
        int i,j;
        float x,y;
        for(i=0;i<n-1;i++){   // Bubble Sort comparer avec n-1
                for(j=0;j<n-1-i;j++){
                        if (nuage.a>nuage.a){
                                x=nuage.a;y=nuage.b;
                                nuage.a=nuage.a;nuage.b=nuage.b;
                                nuage.a=x;nuage.b=y;
                        }else if(nuage.a==nuage.a && nuage.b>nuage.b){
                                x=nuage.a;y=nuage.b;
                                nuage.a=nuage.a;nuage.b=nuage.b;
                                nuage.a=x;nuage.b=y;
                        }}}
        printf("-----------sort----------\n");
        for (i=0;i<n;i++)
        {printf(" %f %f \n",nuage.a,nuage.b);}
}

void nuage() //从文件中读入数据的函数
{
        int i,num;
        char buf;//读入一行的缓冲区
        FILE *f;
        point *pnuage;//malloc分配内存的地址
        f=fopen("data.txt","r");
        if(f==NULL) {
                printf("打开文件失败.\n");
                return;
        }
        fgets(buf,256,f);
        if(sscanf(buf,"%d",&num)!=1){//第一行 坐标数量
                printf("文件格式错误.\n");
                return;
        }

        //point nuage;//如果是C99以后是可以这样定义的
        pnuage=(point *)malloc(sizeof(point)*num);//分配num个结构保存坐标

        //读入num个坐标
        for(i=0;i<num;i++){
                fgets(buf,256,f);
                if(sscanf(buf,"%f%f",&pnuage.a,&pnuage.b)!=2){
                        printf("文件格式错误.\n");
                        return;
                }
        }

        sort(pnuage,num); //最后再排序
        fclose(f);
        free(pnuage);//释放malloc分配的内存
}

int main(){
        nuage();
        return 0;
}
页: [1]
查看完整版本: C语言读取文件中的坐标