从文件中读取数据,排序后写入文件

问题描述

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