张三ccccccc 发表于 2021-8-13 11:44:25

c语言 文件

/****有两个磁盘文件a.txt文件内容为(to catch up)和b.txt文件内容为(a moment),要求合并两个文件,
产生一个新文件,新文件的内容是按字母顺序。即文件内容为:aaccehmmnooptttu*******/
#include "stdio.h"
#include "stdlib.h"
void main ()
{
        FILE *fp1,*fp2,*fp3;
        char ch1,ch2,ch3;
        int i=0,j,temp;
        if(!(fp1=fopen("d:\\exe\\a.txt","r")))
             {
                printf("not been found !");
                exit(0);
             }
        if(!(fp2=fopen("d:\\exe\\b.txt","r")))
             {
                printf("not been found !");
                exit(0);
             }
                if(!(fp3=fopen("d:\\exe\\c.txt","w")))
          {
                printf("not been found !");
                exit(0);
                }
                ch1=fgetc(fp1);
                while(ch1!=EOF)
                {
                        ch3[ i++]=ch1;
                ch1=fgetc(fp1);
                }                     //将ch1的值存入数组ch3。
                ch2=fgetc(fp2);
                while(ch2!=EOF)
                {
                ch3=ch2;
                i++;
                ch2=fgetc(fp2);
                }                      //将ch2的值存入数组ch3。
                ch3='\0';         
                for(j=0;ch3;j++)
                {
                printf("%c",ch3);
                }
                for(i=0;ch3;i++)
                {
      for(j=i+1;ch3;j++)
                        {
                        if(ch3>ch3)
                                {
                                temp=ch3;
                                ch3=ch3;
                                ch3=temp;
                                }
                        }
                }                   //冒泡法排序。
                for(i=0;ch3;i++)
                {
               
                        fputc(ch3,fp3);

                }               
fclose (fp1);
fclose (fp2);
fclose (fp3);
}

jhq999 发表于 2021-8-13 20:01:10

本帖最后由 jhq999 于 2021-8-13 20:11 编辑

{:5_105:}

jhq999 发表于 2021-8-13 20:52:23

本帖最后由 jhq999 于 2021-8-13 21:05 编辑

/****有两个磁盘文件a.txt文件内容为(to catch up)和b.txt文件内容为(a moment),要求合并两个文件,
产生一个新文件,新文件的内容是按字母顺序。即文件内容为:aaccehmmnooptttu*******/
#include "stdio.h"
#include "stdlib.h"
void main ()
{
      FILE *fp1,*fp2,*fp3;
      char ch1,ch2,ch3;
      int i=0,j,temp;
      if(!(fp1=fopen("d:\\exe\\a.txt","r")))
             {
                printf("not been found !");
                exit(0);
             }
      if(!(fp2=fopen("d:\\exe\\b.txt","r")))
             {
                printf("not been found !");
                exit(0);
             }
                if(!(fp3=fopen("d:\\exe\\c.txt","w")))
            {
                printf("not been found !");
                exit(0);
                }
                ch1=fgetc(fp1);
                while(ch1!=EOF)
                {
                        ch3[ i++]=ch1;
                ch1=fgetc(fp1);
                }                     //将ch1的值存入数组ch3。
                ch2=fgetc(fp2);
                while(ch2!=EOF)
                {
                ch3=ch2;
                i++;
                ch2=fgetc(fp2);
                }                      //将ch2的值存入数组ch3。
                ch3='\0';         
                for(j=0;ch3;j++)
                {
                printf("%c",ch3);
                }
                for(i=0;ch3;i++)/////////////////////////////////////////////////////////////////把ch3替换成ch3,否则只能进行第一轮冒泡
                {
      for(j=i+1;ch3;j++)
                        {
                        if(ch3>ch3)
                              {
                        
                              }
                        }
                }                   //冒泡法排序。
                for(i=0;ch3;i++)
                {
               
                        fputc(ch3,fp3);

                }               
fclose (fp1);
fclose (fp2);
fclose (fp3);
}

wangka 发表于 2021-8-13 21:00:28

人造人 发表于 2021-8-13 21:26:22

张三ccccccc 发表于 2021-8-13 23:51:51

jhq999 发表于 2021-8-13 20:52


你的冒泡条件丢了

张三ccccccc 发表于 2021-8-14 00:11:14

jhq999 发表于 2021-8-13 20:52


我遇到的问题有两个,一个是存放在ch3的时候,也就是31-38行的存入后输出的结果是:
to catch up
a moment
为啥多了回车T_T。
还有后面产生的新文件,运行之后得不到结果,

jhq999 发表于 2021-8-14 06:42:10

本帖最后由 jhq999 于 2021-8-14 06:55 编辑

我是用vs2012写的打开文件的函数不一样,但意思一样,你要是复制的话,把打开文件那3段修改一下.
void main ()
{

        FILE *fp1,*fp2,*fp3;
        char ch1,ch2,ch3;
        int i=0,j,temp;
        if(fopen_s(&fp1,"e:\\a.txt","r"))
        {
                printf("not been found !");
                return;
        }
        if(fopen_s(&fp2,"e:\\b.txt","r"))
        {
                printf("not been found !");
                return;
        }
        if(fopen_s(&fp3,"e:\\c.txt","w"))
        {
                printf("not been found !");
                return;
        }
        ch1=fgetc(fp1);
        while(ch1!=EOF)
        {
                ch3[ i++]=ch1;
                ch1=fgetc(fp1);
        }                     //将ch1的值存入数组ch3。
        ch2=fgetc(fp2);
        while(ch2!=EOF)
        {
                ch3=ch2;
                i++;
                ch2=fgetc(fp2);
        }                      //将ch2的值存入数组ch3。
        ch3='\0';         
        for(j=0;ch3;j++)
        {
                printf("%c",ch3);
        }
        for(i=0;ch3;i++)//////////////////////ch3换成ch3,用ch3,i=1时j已经循环到‘\0’了ch3已经是0,退出循环。
        {
                for(j=i+1;ch3;j++)
                {
                        if(ch3>ch3)
                        {
                                temp=ch3;
                                ch3=ch3;
                                ch3=temp;
                        }
                }
        }                   //冒泡法排序。
        for(i=0;ch3;i++)///////////////////ch3换成ch3,和上面说明一样ch3已经是0,直接啥也没写。
        {

                fputc(ch3,fp3);///////////////ch3换成ch3ch3就是0,只在c.txt里写了一个'\0'

        }               
        fclose (fp1);
        fclose (fp2);
        fclose (fp3);

        getchar();
}

张三ccccccc 发表于 2021-8-14 16:12:28

jhq999 发表于 2021-8-14 06:42
我是用vs2012写的打开文件的函数不一样,但意思一样,你要是复制的话,把打开文件那3段修改一下.

牛哇牛哇,谢谢兄弟
页: [1]
查看完整版本: c语言 文件