| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖
标题:关于文件函数的一些疑问
只看楼主 加入收藏
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
结帖率:96.77%
收藏
已结贴  问题点数:5 回复次数:11 
关于文件函数的一些疑问
#include<stdio.h>
 main()
{
    FILE *fp;
    char ch;
    fp=fopen("e:\\exp02.txt","r");
    ch=fgetc(fp);
    while(ch=!EOF)
    {
        putchar(ch);
        ch=fgetc(fp); 这句代码在这有什么用呢?
    }

    fclose(fp);
}
为什么编译没有错误,结果总是显示不出来?(exp02已经创建有内容)





还有一个问题:



#include<stdio.h>
 main()
{
    FILE *fp;
    char ch;
    if((fp=fopen("E:\\exp01.txt","w"))==NULL)

    {
        printf("can not open file\n");
        return 0;
    }
    ch=getchar();
    while(ch!='#')
    {
        fputc(ch,fp);
        ch=getchar();
    }
    fclose(fp);
}
一个逻辑问题:exp01事先并没有创建,通过代码建立后内容应该是空的吧,按这种逻辑的话,应该返回不能打开文件的提示信心,为什么不是这样呢?
还有就是:第二个ch=getchar();的作用是什么?以前遇到过的说的是除了一般的接收单个字符功能外,就是接收回车符,保证程序继续运行,这里的也是这个作用吗?
搜索更多相关主题的帖子: file return include 疑问 
2012-10-04 12:48
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:3 
第一个

程序代码:
#include<stdio.h>
int main(void)
{
    FILE *fp;
    char ch;
    fp=fopen("exp02.txt","r");
    ch=fgetc(fp);
    while(ch != EOF)
    {
        putchar(ch);
        ch=fgetc(fp); //这句代码在这有什么用呢?
    }

    fclose(fp);
    return 0;
}

ch=fgetc(fp); //这句代码在这有什么用呢?

这个代码的功能就是 在没到文件结尾的时候循环输出 注意这里是getc 也就是一个字符一个字符的来
2012-10-04 12:58
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
上面的代码为了编译通过我稍微改过一些地方 你看看罢

exp01事先并没有创建,通过代码建立后内容应该是空的吧,按这种逻辑的话,应该返回不能打开文件的提示信心,为什么不是这样呢?

这个我没明白你的疑问

我理解这里是这样的 fopen的参数是"w"也就是为了写入而打开 如果文件存在就打开来写 如果原来有这个也是删除了弄个新的罢

但这个操作是可能出错的 所以要加判断 至于第一个代码 因为已经假设文件存在了 所以判断不判断意义不大 可以不判断

第二个ch=getchar();的作用是什么?以前遇到过的说的是除了一般的接收单个字符功能外,就是接收回车符,保证程序继续运行,这里的也是这个作用吗?

这里差不多也是这个意思

还有 如果学C语言不是专业的话 你帖的这些代码是勉强可以 当如果是以后想从事这方面工作的话 建议你写 int main(void) 和return 具体原因搜索一下本版罢
2012-10-04 13:05
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
真是个牛人啊,已经把我大部分的疑问给解决了,特别是主函数的抒写方式让我受益匪浅,非常感谢!但是第一个程序按照你该的运行后还是无法显示结果
修改后变为
:#include<stdio.h>
int  main(void)
{
    FILE *fp;
    char ch;
    fp=fopen("e:\\exp02.txt","r");
    ch=fgetc(fp);
    while(ch=!EOF)
    {
        putchar(ch);
        ch=fgetc(fp);
    }
   
    fclose(fp);
    return 0;
}   还是无法显示exp02里面的内容,是不是运行环境的原因啊

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-04 13:42
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用一个孩子在2012-10-4 13:42:23的发言:

真是个牛人啊,已经把我大部分的疑问给解决了,特别是主函数的抒写方式让我受益匪浅,非常感谢!但是第一个程序按照你该的运行后还是无法显示结果
修改后变为
:#include
int  main(void)
{
    FILE *fp;
    char ch;
    fp=fopen("e:\\exp02.txt","r");
    ch=fgetc(fp);
    while(ch=!EOF)
    {
        putchar(ch);
        ch=fgetc(fp);
    }
   
    fclose(fp);
    return 0;
}   还是无法显示exp02里面的内容,是不是运行环境的原因啊
我测试的时候直接改成fopen("exp02.txt","r"); 这样txt文件和exe程序放一块就可以了 txt文件是随便打的 但你为啥不行我就不知道了。。。
2012-10-04 14:47
w823352417
Rank: 3Rank: 3
来 自:甘肃兰州
等 级:论坛游侠
威 望:1
帖 子:43
专家分:113
注 册:2012-10-4
收藏
得分:3 
回复 楼主 一个孩子
第一个里面:第八行
while(ch!=EOF)//不是ch=!EOF,ch=!EOF是赋值语句,这里是判断是否到文件尾

在代码中享受乐趣
2012-10-04 15:03
w823352417
Rank: 3Rank: 3
来 自:甘肃兰州
等 级:论坛游侠
威 望:1
帖 子:43
专家分:113
注 册:2012-10-4
收藏
得分:0 
回复 2楼 zklhp
版主  你改了循环条件没告诉他啊,导致你们两个都不知道问题出在哪了

在代码中享受乐趣
2012-10-04 15:06
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
改成fopen("exp02.txt","r"); 我这直接运行不成,还真不知道是咋回事了啊,难道是我的vc6.0出现了问题?

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-04 15:08
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用w823352417在2012-10-4 15:06:55的发言:

版主  你改了循环条件没告诉他啊,导致你们两个都不知道问题出在哪了

对 我的错 最重要的没说

while(ch != EOF)
2012-10-04 15:09
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用一个孩子在2012-10-4 15:08:58的发言:

改成fopen("exp02.txt","r"); 我这直接运行不成,还真不知道是咋回事了啊,难道是我的vc6.0出现了问题?

光改这个还不行 还得把txt文件和exe放一块 或者把exe单独复制出来和txt放一块
2012-10-04 15:10
快速回复:关于文件函数的一些疑问
数据加载中...
 
   



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

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