如何解决从文件中读取数据,排序后写入文件
我正在尝试编写一个程序,该程序将从 CSV 文件中读取数据并使用 qsort 对其进行排序,然后将其写入另一个 CSV 文件,但它不起作用。它只是打开 out.csv 文件,什么也不写。我的问题是我不确定如何从文件中读取结构。我正在学习如何编码,我真的可以使用一些帮助。你能告诉我我做错了什么吗? 我的数据看起来像这样 (material1 3.5 6000000 ; material2 3.2 70000 ...)
#include <stdio.h>
#include <stdlib.h>
struct material{
char *name;
double k;
double s;
};
int compk(const void *p1,const void *p2)
{
return(((struct material*)p1)->k -((struct material*)p2)->k);
}
int comps(const void *p1,const void *p2)
{
return(((struct material*)p1)->s -((struct material*)p2)->s);
}
int main(void)
{
FILE *mFileIn,*mFileOut;
double k,s;
char name;
struct material my_materials[100];
mFileIn=fopen("C:\\Users\\Berru\\Desktop\\in.csv","r");
if (mFileIn == NULL) {
printf("Error opening file \n");
return 1;
}
mFileOut=fopen("C:\\Users\\Berru\\Desktop\\out.csv","w");
if (mFileOut == NULL) {
printf("Error opening file \n");
return 1;
}
int i,counter;
for(counter=0;counter<100;counter++)
{
if(fscanf(mFileIn," %s %lf %lf",my_materials[counter].name,my_materials[counter].k,my_materials[counter].s)==3)
{
my_materials[i].name=name;
my_materials[i].k=k;
my_materials[i].s=s;
} else{
break;
}
}
fclose(mFileIn);
qsort(my_materials,counter,sizeof(*my_materials),compk);
fprintf(mFileOut,"Sorted by k\n");
for(i=0;i<counter;i++)
{
fprintf(mFileOut," %-d \t %s \t %lf \t %lf\n",my_materials[counter].s);
}
qsort(my_materials,"Sorted by s\n");
for(i=0;i<counter;i++)
{
fprintf(mFileOut,my_materials[counter].s);
}
fclose(mFileOut);
printf("Data is sorted\n");
return 0;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。