c 實現對檔案操作:選擇排序

來源:互聯網
上載者:User

分別實現選擇排序和冒泡排序(在上上篇文章)對以下檔案進行排序。
支援如下形式調用:BubbleSort.exe input.txt output.txt 0
                                    BubbleSort.exe input.txt output.txt 1
                                     (0:從小到大,1:從大到小)。
注意中文處理(若無法處理可以只對學號排序,需要在文檔中說明)

 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4  5 #define N 200 6 struct student{ 7     char num[200]; 8     char name[200]; 9     float ave;10 }st[N],temp1;11 12 struct Newstudent{13     char num[200];14     char name[200];15     char row[200];16     float ave;17 }st_New[N],temp2;18 19 //void SelectionSort();20 21 22 void main(int argc,char **argv){23    FILE *fp1,*fp2;24    int i,j,sum,min;25    char str[200];26    char *input,*output,flag;27    char tempOne[200];28    char tempTwo[200];29    //char *str[N];30 31    if(argc<4){32       input="input.txt";33       output="output.txt";34       flag='0';35     }36    else{37       input=*(argv+1);38       output=*(argv+2);39       flag=**(argv+3);40    }41 42    /*讀檔案*/43    if((fp1=fopen("input.txt","r"))==NULL){44        printf("can not open.");45        exit(0);46    }47    sum=0;48    printf("the File '演算法設計點名冊' is :\n");49    50    for(i=0;(fgets(str,200,fp1))!= NULL;i++,sum++) {51        strcpy(st[i].num,strtok(str,","));52        strcpy(st[i].name,strtok(NULL,","));53        //printf("%s",st[i].num);54        //printf("%s",st[i].name);55    }56    //printf("如果希望從小到大排列請輸入0,如果希望從大到小排列請輸入1:\n");57    //scanf("%d",&flag);58   /*選擇排序*/59    for(i=0;i<193;i++){60         min=i;61         for(j=i+1;j<194;j++)62             if(flag){63               if(strcmp(st[j].num,st[min].num)>0)64                  min=j;65             }66             else{67               if(strcmp(st[j].num,st[min].num)<0)68                  min=j;69             }70         strcpy(tempOne,st[i].num);71         strcpy(st[i].num,st[min].num);72         strcpy(st[min].num,tempOne);//互換值73         74         strcpy(tempTwo,st[i].name);75         strcpy(st[i].name,st[min].name);76         strcpy(st[min].name,tempTwo);//互換值77    }78 79    /*寫入新檔案*/80    if((fp2=fopen("output.txt","wb"))==NULL){81        printf("can not open.");82        exit(0);83    }84    for(j=0;j<sum;j++){85        strcpy(st_New[j].num,strcat(st[j].num,","));//得到學號和逗號86        //printf("%s",st_New[j].num);87        strcpy(st_New[j].name,strcat(st_New[j].num,st[j].name));//合并num和學生姓名88        printf("%s",st_New[j].name);//輸出排序後的點名冊89        fputs(st_New[j].name,fp2);90    }91 92    /*關閉所有檔案*/93    fclose(fp1);94    fclose(fp2);95    /*NOUSe*/96    scanf("%d",i);97 }

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.