| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 460 人关注过本帖
标题:C语言文件节章里一条简单的问题
只看楼主 加入收藏
EricZhan
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2010-7-9
结帖率:86.67%
收藏
已结贴  问题点数:2 回复次数:2 
C语言文件节章里一条简单的问题
有两个磁盘文件”A”和”B”,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件”C”中。(你可以自己创建A B文件)

#include "stdio.h"
#include <stdlib.h>

void main()
{
   FILE *fp,*fo,*fi;
   char e[500];
   int i=0,q=0;
   char t;
   if((fp=fopen("A","r"))==NULL)
   {
     printf("cannot open A");
     getch();
     exit(0);
   }
     if((fo=fopen("B","r"))==NULL)
       {
         printf("cannot open B");
         getch();
         exit(0);
        }
         if((fi=fopen("C","w"))==NULL)
            {
              printf("cannot open C!");
              getch();
              exit(0);
            }
         while(!feof(fp))
         {
           e[i]=fgetc(fp);
           i++;
         }
           while(!feof(fo))
           {
             e[i]=fgetc(fo);
             i++;
           }

           i++;
           i=0;
              while(e[i]!='\0')
               {
                 while(e[q]!='\0')
                   {
                     if(e[q]>e[i])  {t=e[q];e[q]=e[i];e[i]=t;}   /*假设我是按字符从大到小排序*/
                     q++;
                   }
                    i=i+1;
                    q=i;
               }
    i=0;
    while(e[i]!='\0')/*1,用'\0'会在结尾出现ij字符,但你可以自己试改成EOF就没这样的问题,这是为什么?
                       2,还有当你把上面注释部分的改成从小到大排序即e[q]<e[i],这时就C文件里是0字节的,
                       当你把EOF改回'\0',这时C文件里有字符了,可是开头又有两个ij,这是为什么?请高手告诉我*/
    {
       fputc(e[i],fi);
       i++;
    }
    fclose(fp);
    fclose(fo);
    fclose(fi);
    getch();
}

搜索更多相关主题的帖子: 章里 C语言 文件 
2010-08-16 17:12
Rexfield
Rank: 6Rank: 6
来 自:幻想乡
等 级:侠之大者
威 望:1
帖 子:240
专家分:484
注 册:2010-7-28
收藏
得分:1 
给我的第一感觉就是“好折腾”,你可以尝试一下定义一个长度为24或者48的数组来统计这些字母在两个文件中所出现的次数,然后就可以直接输出了。

If you're not failing every now and again, it's a sign you're not doing anything very innovative.
2010-08-16 17:21
EricZhan
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2010-7-9
收藏
得分:0 
回复 2楼 Rexfield
我统计过了,生成的C文件总会比AB两个文件字节数之和大1.即C=A+B+1
2010-08-16 17:57
快速回复:C语言文件节章里一条简单的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016427 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved