| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2870 人关注过本帖
标题:在两个文件中分别存入一行字母,把这两个文件的信息合并按字母顺序排列,输 ...
只看楼主 加入收藏
brokenheart
Rank: 2
等 级:论坛游民
帖 子:64
专家分:25
注 册:2015-11-7
结帖率:76.92%
收藏
已结贴  问题点数:20 回复次数:11 
在两个文件中分别存入一行字母,把这两个文件的信息合并按字母顺序排列,输出到第三个文件中
#include<stdio.h>
#include<string.h>
int main()
{
    FILE *fp1=fopen("E:\\a.txt","w");
    char ch1[3]= {"edf"};
    int i;
    if(fp1!=NULL)
    {
        for(i=0; i<3; i++)
        {
            fputc(ch1[i],fp1);
        }

    }
    fclose(fp1);
    FILE *fp2=fopen("E:\\b.txt","w");
    char ch2[4]= {"abcg"};
    int j;
    if(fp2!=NULL)
    {
        for(j=0; j<4; j++)
        {
            fputc(ch2[j],fp2);
        }
    }
    fclose(fp2);
    int a,b,c;
    strcpy(ch2,ch1);
    strcat(ch2,"");
    for(a=0; a<7; a++)
    {
        for(b=0; b<7-a-1; b++)
        {
            if(ch2[b]>ch2[b+1])
            {
                c=ch2[b];
                ch2[b]=ch2[b+1];
                ch2[b+1]=c;
            }
        }
    }
    FILE *fp3=fopen("E:\\c.txt","w");
    int n;
    if(fp3!=NULL)
    {
        for(n=0; n<strlen(ch2); n++)
        {
            fputc(ch2[n],fp3);

        }
        fclose(fp3);
    }


    return 0;
}
可以在a.txt b.txt中找到输入的字母,但是不能在c.txt中找到相应得信息,各位大神帮帮忙,该怎么改这个代码
搜索更多相关主题的帖子: include 信息 字母 include 信息 字母 
2015-12-24 19:10
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:4 
strcpy(ch2,ch1);

你把ch1字符串烤到ch2里做什么?题目是要你合并两字符串,你准备大点的空间来存放合并后的字符串。
2015-12-25 00:15
brokenheart
Rank: 2
等 级:论坛游民
帖 子:64
专家分:25
注 册:2015-11-7
收藏
得分:0 
回复 2楼 newdos
我就想把ch1  ch2串联起来,还有那个什么用较大的空间来存,该怎么来实现
2015-12-25 20:11
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:4 
弄个chx[80]啊,  strcat你不是下面用过的么?就用它串联到chx里面,排序输出就完了
strcat(chx,ch1);
strcat(chx,ch2);

[此贴子已经被作者于2015-12-25 20:19编辑过]

2015-12-25 20:17
brokenheart
Rank: 2
等 级:论坛游民
帖 子:64
专家分:25
注 册:2015-11-7
收藏
得分:0 
回复 4楼 newdos
改完后,在c.txt中的还是乱码
2015-12-26 11:12
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:2 
输出有内容了,但乱码,说明你的排序那部分有问题,你可以在输出到文件前,打印排序后的字符串的内容看看。
2015-12-26 12:38
brokenheart
Rank: 2
等 级:论坛游民
帖 子:64
专家分:25
注 册:2015-11-7
收藏
得分:0 
回复 6楼 newdos
我试过将它打印出来,就是乱码
2015-12-26 15:10
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:4 
这个简单的例子只是把你写文件的那几个重复代码放在一个函数里,
其它不变,你可以对照一下你改的代码和这个代码有什么不同。
ch1, ch2内容可以改变。乱码可能是你没有初始化chx空间照成的。

#include<stdio.h>
#include<string.h>

//写一行字符串到一个指定的文件中。
void save_file(const char *filename, const char *s)
{
    FILE *fout;

    fout = fopen(filename, "w");
    if(fout)
    {
        for(;*s; s++) fputc(*s, fout);

        fclose(fout);
        printf("file :%s save ok\n", filename);
        return ;
    }
    printf("file :%s open faile\n", filename);
}

int main()
{
    char ch1[] = "edf";
    char ch2[] = "abcg";
    char chx[80] = {0}; //这里初始化一下就不会有乱码了

    save_file("E:\\a.txt", ch1);
    save_file("E:\\b.txt", ch2);

    int a,b,c,d;

    strcat(chx, ch1);
    strcat(chx, ch2);

    puts(chx); //这里输出排序前
    d = strlen(chx);

    for(a=0; a<d; a++)
    {
        for(b=0; b<d-a-1; b++)
        {
            if(chx[b]>chx[b+1])
            {
                c=chx[b];
                chx[b]=chx[b+1];
                chx[b+1]=c;
            }
        }
    }

    puts(chx); //这里输出排序后
    save_file("E:\\c.txt", chx);

    return 0;
}


[此贴子已经被作者于2015-12-26 16:26编辑过]

2015-12-26 16:24
brokenheart
Rank: 2
等 级:论坛游民
帖 子:64
专家分:25
注 册:2015-11-7
收藏
得分:0 
回复 8楼 newdos
的确,你这样写的确实就不会乱码了,但是类似save_file("E:\\c.txt", chx);
这种写法我们没有教,所以不是很清楚的什么意思
2015-12-26 22:26
brokenheart
Rank: 2
等 级:论坛游民
帖 子:64
专家分:25
注 册:2015-11-7
收藏
得分:0 
回复 8楼 newdos
好像你的这段代码比没有将这些代码储存在E盘中
2015-12-26 22:32
快速回复:在两个文件中分别存入一行字母,把这两个文件的信息合并按字母顺序排列 ...
数据加载中...
 
   



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

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