| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 412 人关注过本帖
标题:c语言对文件操作的一点小问题
只看楼主 加入收藏
baokanggui
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-5-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
c语言对文件操作的一点小问题
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"

int main()
{
    FILE *fp;
    char s[160],t;
    int i,j,n,ni,ch;

    if((fp=fopen("file1.txt","w"))==NULL)
        {
            printf("haha\n");
            exit(0);
        }
//    else
        //{
            t=getchar();
            while(t!='#')
            {
                fputc(t,fp);putchar(t);
                t=getchar();
            }
        fclose(fp);

    //    }
        //fclose(fp);

//    if((fp=fopen("fi"")))
    fp=fopen("file1.txt","r");
    for(i=0;(ch=fgetc(fp)!=EOF);i++)
        {
            s[i]=ch;
        }

    ni=i;


    if((fp=fopen("file2.txt","w"))==NULL)
        {
            printf("hehe\n");
            exit(0);
        }
    else
        {
            ch=getchar();
            while(ch!='#')
            {
                fputc(ch,fp);putchar(ch);
                ch=getchar();
            }
        }
    fclose(fp);
    fp=fopen("file2.txt","r");
    for(i=ni;(ch=fgetc(fp)!=EOF);i++)
        {
            s[i]=ch;
        }
   
    n=i;
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(s[i]>s[j])
            {
                t=s[i];
                s[i]=s[j];
                s[j]=t;
            }
        }
    }
    printf("\nfile3 文件内容是:\n");
   
    fp=fopen("file3.txt","w");
    for(i=0;i<n;i++)
    {
        fputc((s[i]),fp);
        putchar(s[i]);
    }
    fclose(fp);
    return 0;

}
本意是将file1.txt  file2.txt里面的字母从小到大排序输出到file3.txt中,但file3里面出现乱码
搜索更多相关主题的帖子: c语言 文件 
2010-05-26 10:08
NoSoul
Rank: 9Rank: 9Rank: 9
来 自:沈阳化工大学
等 级:蜘蛛侠
帖 子:283
专家分:1010
注 册:2009-6-6
收藏
得分:20 
#include <stdio.h>
#include <string.h>
#include <windows.h>
int main()
{
    FILE *fp;
    char s[160],t;
    int  i,j,n;
    if((fp=fopen("file1.txt","w"))==NULL)
    {
        printf("haha\n");
        exit(0);
    }
    t=getchar();
    while(t!='#')
        getchar(),fputc(t,fp),t=getchar();
    getchar();
    fclose(fp);
    fp=fopen("file1.txt","r");
    i=0;
    do
    {
        t=fgetc(fp);
        s[i++]=t;
    }while(t!=EOF);
    if((fp=fopen("file2.txt","w"))==NULL)
    {
        printf("hehe\n");
        exit(0);
    }
    t=getchar();
    while(t!='#')
        getchar(),fputc(t,fp),t=getchar();
    getchar();
    fclose(fp);
    fp=fopen("file2.txt","r");
    do
    {
        t=fgetc(fp);
        s[i++]=t;
    }while(t!=EOF);
    n=i,j=0;
    for(i=0;i<n;i++)
        if(s[i]>='a'&&s[i]<'z')
            s[j++]=s[i];
    s[j]='\0',n=j;
    for(i=0; i<n-1; i++)
        for(j=i+1; j<n; j++)
            if(s[i]>s[j])
                t=s[i],s[i]=s[j],s[j]=t;
    printf("\nfile3 文件内容是:\n");
    fp=fopen("file3.txt","w");
    for(i=0; i<n; i++)
        fputc(s[i],fp),putchar(s[i]);
    fclose(fp);
    return 0;
}
input:
a
c
e
#
b
d
f
#
output:

file3 文件内容是:
abcdef


文件内容自己查看

我想伸手拉近點,竟觸不到那邊,就欠一點點,但這一點點...卻好遠
2010-05-26 13:05
LUNNAN
Rank: 2
等 级:论坛游民
帖 子:30
专家分:44
注 册:2010-5-23
收藏
得分:0 
(ch=fgetc(fp)!=EOF) lz没注意运算符的优先级问题,由于!=的优先级高于=所以现比较,返回true,也就是1,笑脸的ascii是1,所以输出的都是笑脸,应该改为((ch=getch(fp))==NULL)有两处都是这个原因
2010-05-26 13:05
快速回复:c语言对文件操作的一点小问题
数据加载中...
 
   



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

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