| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 640 人关注过本帖
标题:键盘输入送文件的问题
取消只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:20 回复次数:3 
键盘输入送文件的问题
从键盘输入一些字符,逐个把他们送到磁盘上去,直到输入一个“#”为止。
下面是教材上的程序:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    FILE * fp;
    char ch, filename[10];
    scanf("%s", filename);
    if ((fp = fopen(filename, "w")) == NULL)
    {
        printf("Can not open file.\n");
        exit(0);
    }
    ch = getchar();
    ch = getchar();
    while (ch != '#')
    {
        fputc(ch, fp);
        putchar(ch);
        ch = getchar();
    }
    putchar(10);
    fclose(fp);
    return 0;
}
搞不懂3个ch = getchar();的具体用途,谁能解释下? 要是能说下流程更好。
搜索更多相关主题的帖子: 键盘 include file 
2011-12-18 19:54
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 2楼 月夜幻影
ch = getchar();//接受回车符;如果没有这一行,那么输入名字后ch接受换行,那么光标下一一行,对应温江中也从第二行开始
ch = getchar();//接受字符
第一个接受了最后的回车符,第二个为什么不接受回车符前面的字符?

梅尚程荀
马谭杨奚







                                                       
2011-12-20 16:39
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 3楼 hengde_li
有不回车也能输入的情况?

梅尚程荀
马谭杨奚







                                                       
2011-12-20 16:40
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 6楼 离开天空的云
同是getchar在同一个缓存区读数据,为什么一个读最后一个读最前?
我想是不是 scanf("*****#");后 *****#与回车符分离,*******#被存到某个存储器,而回车还留在缓存中。
getchar();来找东西给别人先去缓存搜索,没有就去存储器找,有的话就直接吸收,因此上几楼都说吸收回车符。
第二个getchar();来后在缓存没找到东西,就从******#开始读入;所以它吃到第一个字符。 否则解释不通啊。
如果是这样,那么为什么又会是这样呢?

梅尚程荀
马谭杨奚







                                                       
2011-12-20 22:27
快速回复:键盘输入送文件的问题
数据加载中...
 
   



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

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