用c语言如何读入并使文本文件按某一列排序输出? c语言读取文件一列 文件以某列的数据按大小排列

\u5982\u4f55\u7528C\u8bed\u8a00\u5c06\u6587\u672c\u6587\u4ef6\u4e2d\u5185\u5bb9\u8bfb\u5165\u7a0b\u5e8f\uff0c\u5e76\u6309\u7167\u7b2c\u4e8c\u5217\u7684\u6570\u636e\u8fdb\u884c\u4ece\u5927\u5230\u5c0f\u6392\u5e8f\u3002


#include #include #include typedef struct stt{ char c1[9]; int c2; struct stt *next;}STT;void readFile(FILE *fp);void writeFile(FILE *fp);void printfSTT();//\u6253\u5370\u94fe\u8868void px();//\u5c06\u94fe\u8868\u6309c2\u964d\u5e8f\u6392\u5217STT *sttHead=NULL,*sttTail=NULL;int main(){ FILE *fp; if((fp=fopen("c:\\list.txt","rt+"))==NULL) { printf("can't open File!"); exit(1); } sttHead=(STT *)malloc(sizeof(STT)); sttHead->next=NULL; readFile(fp); printfSTT(); px(); printf("-----------\u6392\u5e8f\u540e-------------\n"); printfSTT(); writeFile(fp); return 0;}void px(){ STT *sttHeadSave1=sttHead,*sttHeadSave2=NULL,sttSave,*nextSave; while(sttHeadSave1->next!=NULL) { sttHeadSave2=sttHeadSave1->next; while(sttHeadSave2->next!=NULL) { if((sttHeadSave1->next->c2)next->c2)) { sttSave=*(sttHeadSave1->next); nextSave=sttHeadSave1->next->next; *(sttHeadSave1->next)=*(sttHeadSave2->next); sttHeadSave1->next->next=nextSave; nextSave=sttHeadSave2->next->next; *(sttHeadSave2->next)=sttSave; sttHeadSave2->next->next=nextSave; } sttHeadSave2=sttHeadSave2->next; } sttHeadSave1=sttHeadSave1->next; }}void printfSTT(){ STT *sttHeadSave=sttHead; printf("-----------\u6253\u5370\u94fe\u8868-------------\n"); while(sttHeadSave->next!=NULL) { printf("%s %d\n",sttHeadSave->next->c1,sttHeadSave->next->c2); sttHeadSave=sttHeadSave->next; }}void readFile(FILE *fp){ int c2; char c1[9]; STT *sttNew; fseek(fp,0,SEEK_SET); printf("-----------\u8bfb\u53d6\u6587\u4ef6\u5230\u94fe\u8868-------------\n"); while(fscanf(fp,"%s %d",c1,&c2)!=-1) { sttNew=(STT *)malloc(sizeof(STT)); sttNew->next=NULL; strcpy(sttNew->c1,c1); sttNew->c2=c2; if(sttHead->next==NULL) sttHead->next=sttNew; else sttTail->next=sttNew; sttTail=sttNew; }}void writeFile(FILE *fp){ fseek(fp, 0, SEEK_SET); fseek(fp, 0, SEEK_END); printf("-----------\u5f00\u59cb\u5199\u5165\u6587\u4ef6-------------\n"); STT *sttHeadSave=sttHead; fprintf(fp,"%s","-----------\u6392\u5e8f\u540e-------------\n"); while(sttHeadSave->next!=NULL) { fprintf(fp,"%s %d%s",sttHeadSave->next->c1,sttHeadSave->next->c2,"\n"); sttHeadSave=sttHeadSave->next; } printf("------------\u5199\u5165\u5b8c\u6210-------------\n");}

1.\u7528fgets\u51fd\u6570\u53ef\u4ee5\u8bfb\u53d6\u6587\u4ef6\u4e2d\u67d0\u884c\u7684\u6570\u636e\uff0c\u67d0\u5217\u6570\u636e\u5c31\u5fc5\u987b\u4e00\u4e2a\u4e00\u4e2a\u8bfb\u5165\u6bcf\u884c\u7684\u7b2c\u51e0\u4e2a\u5b57\u7b26\uff0c\u518d\u5b58\u5165\u5230\u4e00\u4e2a\u5b57\u7b26\u4e32\u5f53\u4e2d\u30022.\u4f8b\u7a0b\uff1a
#include#includevoid main(){ char a[100],b[100],c[100]; int i=3,j=4,k=0; //\u7b2c\u4e09\u884c\uff0c\u7b2c\u56db\u5217 FILE *fp = fopen("data.txt","r"); while(fgets(c,100,fp)){ //\u8bfb\u5165\u6bcf\u884c\u6570\u636e i--; if(i==0) strcpy(a,c); //\u8bfb\u5230\u7b2c\u4e09\u884c\u6570\u636e b[k++]=c[j-1]; //\u628a\u6bcf\u884c\u7684\u90a3\u5217\u5b57\u7b26\u62f7\u5230b\u4e2d } b[k]=0; printf("\u7b2c%d\u884c\u6570\u636e\uff1a%s\n",i,a); printf("\u7b2c%d\u5217\u6570\u636e\uff1a%s\n",j,b); fclose(fp);}3.\u9047\u5230\u6b64\u95ee\u9898\uff0c\u5982\u679c\u6b64\u529f\u80fd\u4e0d\u662f\u5e94\u7528\u8f6f\u4ef6\u7684\u4e00\u90e8\u5206\uff0c\u5219\u53ef\u4ee5\u901a\u8fc7\u6279\u5904\u7406\u7684for\u5faa\u73af\u547d\u4ee4\u6765\u8fdb\u884c\u63d0\u53d6\uff0c\u76f8\u5bf9\u6bd4\u4f7f\u7528c\u8bed\u8a00\u6548\u7387\u3002

  1. 使用文件操作函数打开文件,读取信息,进行排序,重新写入并覆盖原文件。

  2. 例程:

    #include <stdio.h>
    #include <stdlib.h>
    int comp(const void* a,const void* b){
        return *(int*)a-*(int*)b;    
    }
    int main(){
        FILE *p;//文件指针
        int i,j,a[1000];
        p = fopen("文件名称", "r");//第一个字符串是你文件路径,路径中的\要写成\\,文件名必须带后缀
        for(i=0;fscanf(p,"%d",a+i)!= EOF;i++);//EOF为文件尾(end of file),读取文本中的数据  
        qsort(a,i,sizeof(int),comp); //由小到大排序,比较方式由comp函数指定。
        fclose(p);
        p = fopen("文件名称", "w");//以写入方式重新打开
        for(j=0;j<i;j++) fprintf(p,"%d ",a[j]);//重新输入排序后的数据  
        fclose(p)
        return 0;
    }


你可以酱紫:

# include <stdio.h>

int main(void)
{
    FILE *p;//文件指针
    char ch[1000];//1000你可以改滴~
    int i = 0;
    
    p = fopen("", "r");//第一个字符串是你文件路径,路径中的\要写成\\,文件名必须带后缀
    if (!p)//如果文件打开失败,fopen返回NULL(0)
    {
        printf("打开文件失败!
");
        exit(-1);
    }
    while(ch[i-1] != EOF || i=1000)//EOF为文件尾(end of file)
    {
        ch[i] = getc(p);//向p指向的流中读一个字符,并将文件指针后移一位,返回值为读到的字符的ASCII码
        i++;
    }
    //下面你就可以对数组处理了
    //或者你可以处理一行,读一行.但是我不知道你想咋处理,就这样写了

    return 0;
}


  • C绋嬪簭涓濡備綍浠巘xt鏂囦欢涓璇诲叆鏁版嵁!
    绛旓細鍋囪浠ヤ笂涓よ鏄竴涓悕涓篴.txt鏂囦欢涓殑鏁版嵁,涓棿鏄敤绌烘牸闅斿紑鐨,鍥炶溅鎹㈣銆傛垜鐜板湪瑕佸湪C绋嬪簭涓璇诲叆杩欎釜鏂囦欢涓殑鏁村舰鏁版嵁,璇烽棶绋嬪簭鏀规庝箞鍐欏晩???灏忓紵鍒氬涔燙,姹傞珮浜烘寚鐐瑰晩!!!锝烇綖锝 闃跨摝鏂壒 | 娴忚9545 娆 |涓炬姤 鎴戞湁鏇村ソ鐨勭瓟妗堟帹鑽愪簬2017-12-16 10:31:23 鏈浣崇瓟妗 鍍忚繖绉嶆儏鍐,鏈夊绉嶆柟娉,鏈绠鍗曠殑...
  • c璇█璇诲彇txt鏂囨。骞跺皢鍐呭瀛樻斁鍒拌〃閲
    绛旓細涓銆佸ぇ姒備簡瑙 c璇█鏂囦欢鐨勬搷浣滃垎 璇 鍜 鍐欙紝璇绘寚鐨勬槸锛灏嗘枃浠鍐呯殑淇℃伅鍐欏叆鍒扮▼搴忥紝鍙互鐞嗚В涓 纭洏淇℃伅->鍐呭瓨淇℃伅 鐨勮浆鍖栨柟寮 鑰屽啓鎸囩殑鏄細灏嗙▼搴忎腑鐨勪俊鎭啓鍏ュ埌鏂囦欢锛屽txt鏂囦欢銆傛槸涓绉 鍐呭瓨淇℃伅->纭洏淇℃伅 鐨勮浆鍖栨柟寮 瀵逛簬浣犵殑闂锛屽垯鏄 璇 鐨勬柟寮忥紝浜屻佸叿浣撲娇鐢ㄦ柟娉 鍦C璇█涓紝璇绘枃浠剁殑...
  • C璇█,濡備綍鐢ㄥ惊鐜璇诲叆澶氫釜鏂囨湰鏂囦欢
    绛旓細涓嬮潰鐨勪唬鐮佹槸鍒氬垰缁欎綘鍐欏ソ鐨,鏂囦欢鍚嶄粎闄"a.txt" "b.txt"鍜"c.txt"#include"stdio.h"include"stdlib.h"int main(void){ FILE *fp;char filename[]="a.txt";int i;void *p[3];long filelen;for(i=0;i<3;i++){ fp=fopen(filename,"rb");if(!fp){printf("\"%s\"鏂囦欢鎵撳紑澶辫触...
  • 鐢–璇█濡備綍浠庝竴涓鏂囨湰鏂囦欢涓璇诲叆濮撳悕淇℃伅
    绛旓細FILE *file = fopen("c:\\1.txt","r");鍏朵腑锛岀浜屼釜鍙傛暟琛ㄧず鎵撳紑鏂瑰紡锛"a" 琛ㄧず杩藉姞鏂瑰紡鎵撳紑锛"r" 琛ㄧず浠ヨ鏂瑰紡鎵撳紑锛"w" 琛ㄧず浠ュ啓鏂瑰紡鎵撳紑锛岀涓夛紝璇诲叆鏂囨湰鏂囦欢涓殑鏁版嵁锛歝har s[10] = "";while (!feof(file))fread(s,1,1,file);鍙﹀锛岀敤fputs()鍑芥暟涔熷彲浠ュ疄鐜帮細fputs(str,fp);...
  • C璇█涓濡備綍璋冪敤鏂囨湰鏂囦欢
    绛旓細1銆侀鍏堜娇鐢╒S鏂板缓绌哄伐绋嬶紝鐩存帴鐐瑰嚮纭畾銆2銆佺偣鍑绘柊寤洪」閫夐」鏂板缓c鏂囦欢锛岀敤浜C璇█缂栬瘧鍣紝杈撳叆main.c鏂囦欢銆3銆佺劧鍚庢柊寤轰竴涓C鏂囦欢銆4銆佸皢涓婅堪鍙傝冧唬鐮侊紝澶嶅埗鍒癿ain.c鏂囦欢鍐咃紝鐩存帴缂栬瘧鍗冲彲銆5銆佺紪璇戝畬鎴愬悗锛岃繍琛宔xe绋嬪簭锛屾墽琛屽悗灏辨樉绀哄嚭浜唗xt鏂囦欢鍐呭銆
  • C璇█涓濡備綍灏嗘枃鏈枃浠涓殑鏁板瓧璇诲叆
    绛旓細voidmain(){ FILE*fin;inta,b,c,d;chars[20];floatf1,f2,f3,f4;fin=fopen("abc.txt","r");//鎵撳紑 fscanf(fin,"%1d%1d%1d%1d",&a,&b,&c,&d);//鎸1浣嶆暣鍨嬭鍓4涓暟 printf("a=%db=%dc=%dd=%d\n",a,b,c,d);rewind(fin);//鏂囦欢鍥炵粫鍒板紑濮嬪 fscanf(fin,"%s",s);...
  • 濡備綍鍒╃敤c璇█鎵撳紑鏂囨湰鏂囦欢?
    绛旓細C绋嬪簭璇█闈炲父寮哄ぇ锛岄氳繃鎵撳紑鏂囨湰鐨勫嚱鏁帮紙閲岄潰鐨勫弬鏁版寚鍑鸿鎵撳紑鏂囨湰鐨勪綅缃強鏂囦欢鍚嶏級锛屽嵆鍙墦寮鐩稿簲鐨勬枃鏈傜涓锛屽寘鍚殑澶存枃浠讹細#include <stdio.h>锛岃繖鏄竴涓緭鍏ヨ緭鍑哄嚱鏁帮紝绗簩锛屾墦寮鏂囨湰鏂囦欢锛欶ILE *file = fopen("c:\\1.txt","r");浠h〃C鐩樼殑鏂囦欢锛屾枃浠跺悕涓1.txt锛宺琛ㄧず浠ュ彧璇荤殑鏂瑰紡鎵撳紑锛...
  • c璇█濡備綍浠鏂囦欢璇诲叆,骞跺瓨鏀惧湪閾捐〃涓
    绛旓細{ //濡傛灉璇诲彇澶辫触锛屾彁绀猴紝骞惰繑鍥瀐ead printf("read file failure");return head; } fclose(fp);//鏂囦欢璇诲彇瀹屽悗,杩涜閾捐〃鎿嶄綔 if(!head)//濡傛灉浼犺繘鏉ョ殑head鏄釜绌烘寚閽堬紝閭d箞鏂版寚閽堝氨浣滀负澶磋妭鐐硅繑鍥 { new->next = NULL;return new; } while(p->next) p = p->next;//鎶妏绉诲姩鍒版渶鍚庝竴涓...
  • 鎬庢牱鐢╟璇█缂栧啓绋嬪簭瀹炵幇浠鏂囦欢(璁颁簨鏈)璇诲叆鏁版嵁?
    绛旓細include <stdio.h> void main( void ){ FILE *stream;char list[30];int i, numread, numwritten;if( (stream = fopen( "C:\\my.txt", "r+t" )) != NULL ){ numread = fread( list, sizeof( char ), 25, stream );printf( "璇诲彇鏁版嵁闀垮害 = %d\n", numread );list[num...
  • C璇█缂栫▼棰:璇曠紪绋璇诲叆鏂囦欢1.txt,骞跺皢鏂囦欢鍐呭鎵撳嵃杈撳嚭
    绛旓細FILE *fp;int len;//杩欓噷鏂囦欢璺緞鏍规嵁闇瑕佽繘琛屼慨鏀癸紝榛樿鍦ㄥ綋鍓嶇洰褰曚笅 if((fp = fopen("go.txt","r")) == NULL){ perror("open failed!");exit (1) ;} while(fgets(buf, 1024, fp) != NULL){ printf("%s",buf);} putchar('\n');fclose(fp);return 0;} fgets鍚屾椂浼氭妸琛屽熬...
  • 扩展阅读:一个完整的文本解读过程 ... c语言txt文件读写修改 ... 在幻灯片中输入文本的方法 ... 文本细读的八种方法 ... 文本输入的方法有两种 ... txt文件编辑ios ... 读入字符串 c语言 ... c语言读入一个字符 ... c语言读取文件内容并输出 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网