注册 登录
编程论坛 C语言论坛

指针、文件计分作业---排序输出文件

D2284581470 发布于 2019-12-25 23:05, 1638 次点击
【问题描述】读取一个文本文件1.txt,然后将这个文件的内容,排序写到另一个文件2.txt中。

【输入形式】从文件1.txt中读信息。

【输出形式】排序内容写入2.txt文件中。

【样例输入】

is worth doing well

【样例输出】

doing is well worth

【样例说明】

【评分标准】
8 回复
#2
D22845814702019-12-25 23:05
这个我实在不会了,没思路
#3
D22845814702019-12-26 08:45
还没有人吗,版主
#4
八画小子2019-12-26 10:25
一点思路都没有吗?
#5
纯蓝之刃2019-12-26 13:46
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    FILE *fin=NULL,*fout=NULL;
    int num=0,i,j,k=0;
    fin=fopen("1.txt","r");

    char **a=NULL,ch[50];

    a=(char**)calloc(num+1,sizeof(char*));
    a[num]=(char*)calloc(50,sizeof(char));

    while(1)
    {
        a=(char**)realloc(a,sizeof(char*)*(num+1));
        a[num]=(char*)calloc(50,sizeof(char));

        for(j=0;a[num][j-1]!=' '&&a[num][j-1]!=EOF;j++)
            a[num][j]=fgetc(fin);

        if(a[num][j-1]==EOF)
        {
            a[num][j-1]=' ';
            break;
        }

        num++;
    }

    fclose(fin);
    for(i=0;i<num;i++)          //冒泡排序
    {
        for(j=0;j<num-i;j++)
        {
            do
            {
                if((a[j][k]>a[j+1][k]))
                {
                    memcpy(ch,a[j],50);
                    memcpy(a[j],a[j+1],50);
                    memcpy(a[j+1],ch,50);
                    break;
                }
                k++;
            }while(a[j][k-1]==a[j+1][k-1]);
            k=0;
        }
    }

    fout=fopen("2.txt","w");

    for(i=0;i<num+1;i++)        //输出
        fprintf(fout,"%s",a[i]);

    fclose(fout);

    free(a);                    //释放动态内存
    for(i=0;i<num;i++)
        free(a[i]);

    return 0;
}
#6
吹水佬2019-12-26 15:09
文件处理有针对性,最好能提供样板文件看看。
#7
D22845814702019-12-26 15:49
回复 4楼 八画小子
确实,我现在在看楼下版主的回复
#8
D22845814702019-12-26 15:50
回复 5楼 纯蓝之刃
谢谢版主,我一定弄懂
#9
D22845814702019-12-26 15:50
回复 6楼 吹水佬
好的,谢谢
1