|
2鱼币
大佬请教一下 怎么让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[j].a>nuage[j+1].a){
x=nuage[j].a;y=nuage[j].b;
nuage[j].a=nuage[j+1].a;nuage[j].b=nuage[j+1].b;
nuage[j+1].a=x;nuage[j+1].b=y;
}else if(nuage[j].a==nuage[j+1].a && nuage[j].b>nuage[j+1].b){
x=nuage[j].a;y=nuage[j].b;
nuage[j].a=nuage[j+1].a;nuage[j].b=nuage[j+1].b;
nuage[j+1].a=x;nuage[j+1].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[num];
后面这里要怎么把文件的坐标读取进去呢??
sort(nuage,num); //最后再排序
fclose(f);
}
int main(){
nuage();
return 0;
}
- #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[j].a>nuage[j+1].a){
- x=nuage[j].a;y=nuage[j].b;
- nuage[j].a=nuage[j+1].a;nuage[j].b=nuage[j+1].b;
- nuage[j+1].a=x;nuage[j+1].b=y;
- }else if(nuage[j].a==nuage[j+1].a && nuage[j].b>nuage[j+1].b){
- x=nuage[j].a;y=nuage[j].b;
- nuage[j].a=nuage[j+1].a;nuage[j].b=nuage[j+1].b;
- nuage[j+1].a=x;nuage[j+1].b=y;
- }}}
- printf("-----------sort----------\n");
- for (i=0;i<n;i++)
- {printf(" %f %f \n",nuage[i].a,nuage[i].b);}
- }
- void nuage() //从文件中读入数据的函数
- {
- int i,num;
- char buf[256]; //读入一行的缓冲区
- 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[num]; //如果是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[i].a,&pnuage[i].b)!=2){
- printf("文件格式错误.\n");
- return;
- }
- }
- sort(pnuage,num); //最后再排序
- fclose(f);
- free(pnuage); //释放malloc分配的内存
- }
- int main(){
- nuage();
- return 0;
- }
复制代码
|
|