亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

用C語言實現從文本文件中讀取數據后進行排序的功能

2020-01-26 14:28:11
字體:
來源:轉載
供稿:網友

功能介紹

程序的功能是從外部讀取一個包括int型數據的文本文件,然后將它保存到內部臨時數組,對數組進行排序后,以文本形式輸出到指定的文件上。因為是int類型的數據,沒有很嚴重的損失精度的問題。

正常運行要求:

包括數據的源文件內不能包括其他任何除數字和空白字符(空格,制表符,換行符)之外的任何字符,源文件最開始必須是數字字符,要保證源文件的數據計數正確。同時保證文件名有效。

運行結果

data.txt:

obj.txt:

完整代碼

警告:版權所有,謹供參考!

#include <stdio.h>#include <stdlib.h>#include <conio.h>/*=============================  制作于:Aug 16, 2016  by QQ:1729403632===============================*/#define ST 64 //字符串大小void mergesort(int *, int);void _mergesort(int *, int, int, int *);void merge(int *, int, int, int, int *);char * s_gets(char *, int);int main(int argc, char * argv[]){  FILE * sor, * dest; //sor源文件 dest目標文件  int * ptr;//臨時數組  int i, n; //n表示元素個數  char fname[ST]; //臨時存儲字符串  printf("請輸入元素個數:");  while( scanf("%d", &n) != 1 || n <= 0 ){    printf("輸入錯誤,請重新輸入!/n");    while(getchar() != '/n')      continue;  }  while(getchar() != '/n')      continue;  ptr = (int *)malloc( (size_t)n * sizeof(int) ); //申請動態數組//////  if(ptr == NULL){    fprintf(stderr, "FAIL TO ASK FOR MEMORY SPACE/n");    exit(EXIT_FAILURE);  }  printf("請輸入原文件名:");  if( s_gets(fname, ST) == NULL ){    fprintf(stderr, "Fail to get a string/n");    exit(EXIT_FAILURE);  }  sor = fopen(fname, "r"); //打開包含數據的源文件  if(sor == NULL){    fprintf(stderr, "Fail to open the source file/n");    exit(EXIT_FAILURE);  }  for(i = 0; i < n; i++) //獲取數據到動態數組    if( fscanf(sor, "%d", &ptr[i]) != 1 ){      fprintf(stderr, "Fail to get the data/n");      exit(EXIT_FAILURE);    }  mergesort(ptr, n); //排序  printf("請輸入要保存數據的文件名:");  if( s_gets(fname, ST) == NULL ){    fprintf(stderr, "Fail to get a string/n");    exit(EXIT_FAILURE);  }  dest = fopen(fname, "w"); //打開目標文件  if(dest == NULL){    fprintf(stderr, "Fail to open the destination file/n");    exit(EXIT_FAILURE);  }  for(i = 0; i < n; i++){ //輸出數據到目標文件    if( fprintf(dest, "%d/t", ptr[i]) < 0 ){      fprintf(stderr, "Fail to save the data/n");      exit(EXIT_FAILURE);    }    if( ((i + 1) % 10) == 0){ //如果寫滿10個就換行      if( fprintf(dest, "/n") < 0 ){        fprintf(stderr, "Fail to save the data/n");        exit(EXIT_FAILURE);      }    }  }  if( fclose(sor) != 0 ){ //關閉源文件    fprintf(stderr, "Fail to close the source file/n");    exit(EXIT_FAILURE);  }  if( fclose(dest) != 0 ){ //關閉目標文件    fprintf(stderr, "Fail to close the destination file/n");    exit(EXIT_FAILURE);  }  free(ptr); //釋放內存  printf("成功完成!/n請按任意鍵繼續^ ^/b/b");  getch();  return 0;}void mergesort(int * ar, int size){  if(size > 0){    int * temp;    temp = (int *)malloc( (size_t)size * sizeof(int) ); /////    if(temp == NULL){      fprintf(stderr, "Fail to ask for MEMORY SPACE/n");      exit(EXIT_FAILURE);    }    _mergesort(ar, 0, size - 1, temp); //歸并排序    free(temp);  }}void _mergesort(int * ar, int start, int end, int * temp){  if(start < end){    int mid = (start + end) / 2;    _mergesort(ar, start, mid, temp);  //左子數組排序    _mergesort(ar, mid + 1, end, temp);  //右子數組排序    merge(ar, start, mid, end, temp);  //合并子數組  }}void merge(int * ar, int p, int q, int r, int * temp){  int i = p, j = q + 1, k = 0;  while(i <= q && j <= r){    if(ar[i] < ar[j])      temp[k++] = ar[i++];    else      temp[k++] = ar[j++];  }  while(i <= q)  //如果序列[i...q]存在,追加    temp[k++] = ar[i++];  while(j <= r)  //如果序列[j...r]存在,追加    temp[k++] = ar[j++];  for(k = 0; k <= (r - p); k++)    ar[p + k] = temp[k];}char * s_gets(char * st, int size){  char * re;  int i = 0;  re = fgets(st, size, stdin);  if(re){    while(st[i] != '/n' && st[i] != '/0') //如果沒有到輸入字符串結束      i++;  //遞增    if(st[i] == '/n') //如果字符串最后一個字符是'/n'      st[i] = '/0'; //把它變成'/0'    else //否則緩沖區內還有一部分超出讀取范圍的字符沒有被讀取      while(getchar() != '/n') //把這些字符讀取完(清空緩沖區)        continue;  }  return re;}

總結

以上就是用C語言實現從文本文件中讀取數據后進行排序功能的全部內容,閱讀這篇文章后,大家自己進行調試運行,相信會對于學習C語言的朋友們很有幫助的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久综合国产精品台湾中文娱乐网| 成人精品视频99在线观看免费| 欧美野外猛男的大粗鳮| 97在线观看视频国产| 中文字幕日韩在线视频| 北条麻妃一区二区三区中文字幕| 亚洲视屏在线播放| 久久久久久久久91| 国产中文欧美精品| 国产综合香蕉五月婷在线| 久久成人精品一区二区三区| 国产99久久久欧美黑人| 性欧美激情精品| 日韩在线视频网站| 精品欧美一区二区三区| 国产精品亚洲一区二区三区| 亚洲理论在线a中文字幕| 国产欧美一区二区| 日韩精品在线视频美女| 亚洲精品成人免费| 久久精品成人欧美大片古装| 久久九九热免费视频| 亚洲乱码国产乱码精品精天堂| 69久久夜色精品国产7777| 国产激情综合五月久久| 92看片淫黄大片欧美看国产片| 国产精品日韩在线播放| 色小说视频一区| 亚洲精品视频在线观看视频| 在线精品91av| 日本高清不卡在线| 久久天天躁狠狠躁夜夜躁2014| 国产精品18久久久久久首页狼| 国产精品久久久久aaaa九色| 亚洲无亚洲人成网站77777| 国产精品久久激情| 国产91色在线|免| 日韩美女视频免费在线观看| 国产成人在线一区| 亚洲国产成人精品久久久国产成人一区| 欧美精品在线极品| 日韩中文理论片| 国产精品午夜一区二区欲梦| 亚洲天堂2020| 九九精品在线观看| 国产精品视频内| 国产精品久久久999| 日韩欧美亚洲国产一区| 日韩免费观看av| 国产日韩欧美夫妻视频在线观看| 91精品国产高清自在线| 在线视频日本亚洲性| 麻豆一区二区在线观看| 97国产真实伦对白精彩视频8| 欧美壮男野外gaytube| 亚洲国产精品推荐| 中文字幕av一区中文字幕天堂| 国产精品久久久久久久久粉嫩av| 性色av一区二区三区免费| 国产在线播放不卡| 精品久久久久久久久久ntr影视| 岛国av一区二区在线在线观看| 欧美精品久久久久久久免费观看| 成人精品视频久久久久| 亚洲欧美激情另类校园| 亚洲黄色av女优在线观看| 日韩成人在线视频观看| 国产精品久久久一区| 成人在线激情视频| 91免费综合在线| 国产精品大陆在线观看| 欧美日韩国产123| 最近2019年中文视频免费在线观看| 亚洲а∨天堂久久精品喷水| 国产成人精品久久亚洲高清不卡| 欧美精品999| 日韩美女写真福利在线观看| 亚洲国产黄色片| 日韩精品极品毛片系列视频| 亚洲第一级黄色片| 久久久久这里只有精品| 欧美一级视频在线观看| 日韩高清电影免费观看完整| 日韩不卡中文字幕| 久久久久女教师免费一区| 欧美精品999| 最近2019中文免费高清视频观看www99| 久久久国产成人精品| 亚洲影院色无极综合| 久久久99久久精品女同性| 亚洲男人天堂网站| 最新国产精品拍自在线播放| 久久97久久97精品免视看| 亚洲激情视频网| 亚洲国产成人精品久久久国产成人一区| 在线免费观看羞羞视频一区二区| 亚洲精品日产aⅴ| 最新国产成人av网站网址麻豆| 欧美性猛交丰臀xxxxx网站| 久久久久女教师免费一区| 97热精品视频官网| 精品福利在线看| 中文字幕日韩电影| 中文字幕综合在线| 国产主播喷水一区二区| 欧美极品欧美精品欧美视频| 91高清在线免费观看| 亚洲精选一区二区| 久久91精品国产| 久久国产精品久久久久久久久久| 日韩精品在线观看一区二区| 国内精品久久久久影院 日本资源| 国产原创欧美精品| 成人黄色网免费| 一区二区欧美亚洲| 91精品久久久久久久久不口人| 91中文在线观看| 欧美性xxxxxxxxx| 国产日韩专区在线| 欧美激情综合色| 国产成人精品网站| 在线成人免费网站| 欧美俄罗斯乱妇| 日本成熟性欧美| 国产精品自拍小视频| 中文日韩电影网站| 亚洲精品国产精品国自产在线| 国产欧美精品一区二区三区-老狼| 日韩av在线网站| 中文一区二区视频| 欧美成人精品一区二区| 欧美精品在线视频观看| 国产亚洲人成网站在线观看| 国产亚洲视频在线| 亚洲精品免费在线视频| 91精品国产亚洲| 最近的2019中文字幕免费一页| 欧美日韩视频免费播放| 色哟哟亚洲精品一区二区| 国产免费一区二区三区在线能观看| 日韩欧美大尺度| 日韩av不卡电影| 国产欧美一区二区三区在线| 国产精品久久久久免费a∨| 激情av一区二区| 美女久久久久久久久久久| 亚洲精品白浆高清久久久久久| 亚洲女人天堂av| 欧美性生交xxxxx久久久| 亚洲自拍偷拍色片视频| 欧美性猛交xxxxx免费看| 欧美在线视频导航| 国产精品亚洲视频在线观看| 日韩欧美综合在线视频| 日韩专区在线观看| 亚洲国产精久久久久久久| 亚洲激情小视频| 亚洲欧美国产精品| 深夜福利国产精品| 亚洲国产精久久久久久久| 欧美肥老太性生活视频| 亚洲精品色婷婷福利天堂| 日韩精品在线视频观看| 亚洲欧洲黄色网|