问题描述
我正在尝试编写一个程序,该程序将从 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 (将#修改为@)