微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决从文件中读取数据,排序后写入文件

我正在尝试编写一个程序,该程序将从 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 举报,一经查实,本站将立刻删除。