复制输入

C/C++ 2013年04月05日 ,

1 问题提出

把输入复制到输出。

2 解决方案

利用getchar()与putchar()函数,其中getchar()函数从文本流中读入下一个输入字符,并将其作为结果值返回,其函数原型如下:

int getchar( void );

putchar()函数将字符打印到屏幕上,其函数原型如下:

int putchar( int ch );

那么,如何实现将输入复制到屏幕上呢?
利用上面的两个函数,我们有这样一个想法:

读一个字符

while(该字符不是文件结束指示符)

输出刚读入的字符

读下一个字符

将上述基本思想转换为C语言程序为:

#include <stdio.h>

/* copy input to output
 * Author:http://furzoom.com/
 */
int main()
{
    int c;
    c = getchar();
    while(c != EOF)
    {
        putchar(c);
        c = getchar();
    }
    return 0;
}

这里没有将getchar()返回的值存储于char类型的变量中的原因是什么呢,想一想。
int类型的数据在不同的机器上是16位或者32位的,而char类型的数据是8从位或者16位的,也就是说任何int都可以用于存储字符型数据。这里用int类型的主要考虑就是为了区分文件中有效数据与输入结束符的问题。C语言中,在没有输入时,getchar函数返回一个特殊值,定义为EOF(end of file),它定义在stdio.h文件中,通过查找其定义发现,EFO被定义为-1,它不与任何一个实际是字符相同,因此我们不能将其声明为char类型,而要声明为int类型。
熟悉C语言的读者会把上面的程序作如下的简化:

#include <stdio.h>

/* copy input to output
 *  Author:http://furzoom.com/
 */
int main()
{
    int c;
    while((c = getchar())!= EOF)
    {
        putchar(c);
    }
    return 0;
}

V1.1.0版本将输入集中化,getchar函数在程序中只出现了一次,这样程序就看起来更紧凑,但是过于紧凑的程序可能会引起程序难于理解。

3 总结

充分利用getchar()与putchar()的返回值,可以使程序变得紧凑简短

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
日志标题:《复制输入》
日志链接:http://furzoom.com/copy-input/
博客名称:枫竹梦

【上一篇】
【下一篇】

发表评论

插入图片

NOTICE1:请申请gravatar头像,没有头像的评论可能不会被回复!

回到顶部