| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2069 人关注过本帖
标题:关于文件函数的问题!
只看楼主 加入收藏
独孤小梦
Rank: 1
等 级:新手上路
威 望:1
帖 子:338
专家分:0
注 册:2008-6-5
结帖率:80%
收藏
 问题点数:0 回复次数:14 
关于文件函数的问题!
先谢谢大家能看我的帖,问题如下:
#include"stdio.h"
#include"stdlib.h"
void main()
{
    FILE *fp;
    char ch,filename[10];
    scanf("%s",filename);
    if((fp=fopen(filename,"w+"))==NULL)
    {
        printf("hi,你错了拉!从来!\n");
        exit(0);
    }
    ch=getchar();  //*这里是用来接收在执行scanf时最后输入的回车符!*//
    ch=getchar();
    while(ch!='#')
    {
        fputc(ch,fp);putchar(ch);
        ch=getchar();
    }
    putchar(10);
    fclose(fp);
}

    ch=getchar();  //*这里是用来接收在执行scanf时最后输入的回车符!*//
这里我尝试了一下,把ch=getchar();去掉,可是多出来一个回车!为什么在执行scanf时,把回车符“掉了”!我尝试使用空格来结束scanf,能按照理想的输入!
那为什么使用回车时,文件最前排会多出来一空行?
还有,ch=getchar();这里是用来接收回车的?当我们按回车以后表示scanf结束!那么怎么会多出来呢?这里它是怎么接收的?
fputc(ch,fp);这里的ch不是只有一个字符吗?getchar不是只能接收一个字符吗?怎么能把输入的整串文字输出呢?
putchar不是也只能输出一个字符吗?putchar(10);这个我尝试了一下,没必要留在程序中,它执行以后会输出几行空白的区域……
搜索更多相关主题的帖子: 函数 getchar scanf 文件 filename 
2008-07-06 14:47
独孤小梦
Rank: 1
等 级:新手上路
威 望:1
帖 子:338
专家分:0
注 册:2008-6-5
收藏
得分:0 
大家帮帮忙!谢谢了啊

编程小菜
2008-07-06 15:34
崔园园
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2008-4-21
收藏
得分:0 
怎样才能输出这个呀?
我连程序都看不懂,printf("hi,你错了拉!从来!\n");
        我对文件不太熟悉,请指点
2008-07-06 16:19
崔园园
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2008-4-21
收藏
得分:0 
我试了好多遍也输不出printf("hi,你错了拉!从来!\n");
2008-07-06 16:20
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
问一下,你的内容和文件函数有什么关系啊?
文件函数:
fprintf
fscanf
fread
fwrite
CreateFile
WriteFile
ReadFile
CreateFileMapping
MapViewOfFile
UnmapViewOfFile
CloseHandle
...

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-07-06 16:34
coming
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2008-4-20
收藏
得分:0 
我知道有一个错误~~~是“重来”不是“从来”呵呵
2008-07-06 23:08
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
scanf("%s",filename);
    if((fp=fopen(filename,"w+"))==NULL)
    {
        printf("hi,你错了拉!从来!\n");
        exit(0);
    }
    ch=getchar();  //*这里是用来接收在执行scanf时最后输入的回车符!*//
    ch=getchar();


改成:

   scanf("%s%*c",filename);
    if((fp=fopen(filename,"w+"))==NULL)
    {
        printf("hi,你错了拉!从来!\n");
        exit(0);
    }
    ch=getchar();

flyue。getchar也是文件函数,getchar/putchar的定义是:
#define getchar() getc(stdin)
#define putchar(ch) putc((ch),stdout)

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-06 23:59
yyow3193
Rank: 1
来 自:三峡宜昌
等 级:新手上路
帖 子:165
专家分:0
注 册:2008-6-5
收藏
得分:0 
哈哈,,,这个问题
2008-07-07 12:20
独孤小梦
Rank: 1
等 级:新手上路
威 望:1
帖 子:338
专家分:0
注 册:2008-6-5
收藏
得分:0 
哦,意思就是说putc只能输出一个字符,所以putchar也只能输出一个字符是吗?
那么puts也是一个输出的涵数!这里可否能代替?
还是这个问题,我还没理解!
把ch=getchar();去掉,可是多出来一个回车!为什么在执行scanf时,把回车符“掉了”!我尝试使用空格来结束scanf,能按照理想的输入!
那为什么使用回车时,文件最前排会多出来一空行?
还有,ch=getchar();这里是用来接收回车的?当我们按回车以后表示scanf结束!那么怎么会多出来呢?这里它是怎么接收的?
fputc(ch,fp);这里的ch不是只有一个字符吗?getchar不是只能接收一个字符吗?怎么能把输入的整串文字输出呢?
putchar不是也只能输出一个字符吗?putchar(10);这个我尝试了一下,没必要留在程序中,它执行以后会输出几行空白的区域……
给我说说,谢谢了!

编程小菜
2008-07-07 20:30
独孤小梦
Rank: 1
等 级:新手上路
威 望:1
帖 子:338
专家分:0
注 册:2008-6-5
收藏
得分:0 
scanf("%s%*c",filename);


这里为什么会这么改呢?
filename是一个数组,能代替两个变量?

编程小菜
2008-07-07 20:31
快速回复:关于文件函数的问题!
数据加载中...
 
   



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

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