一道输入输出简单的题目获得其他无关的知识
从标准输入逐个字符复制到标准输出,一个简单白给的题目,提到标准输入输出,直接就想到scanf和printf这两个函数,对于取字符还有getchar和putchar两个函数,预期效果是什么?从键盘架输入一个字符,从显示器输出一个字符?如果从键盘输入三个字符,那么输出的是什么字符?应该是三个字符当中的第一个字符吗?
按题目要求的效果,每次输入一个字符,输出一个相同字符。很简单用上面任何一个读函数来读取字符再调用写函数输出。
定义一个字符型变量用来保存getchar获取的字符值,然后调用输入和输出函数,输入一个字符,回车,发现输出了一个和输入字符值一样的字符。
输入几个字符时发现只能输出第一个字符,这很好理解,因为一次只能获取一个字符,然后输入函数执行,程序结束。
为了实现逐个字符输出,就要用到循环,死循环和有限循环都可以,循环体中调用getchar和putchar,用来一次一次输入输出。
这次一次输入多个字符,getchar取一个字符,然后只输出这一个,接着进入下次循环等待下次输入。

结果显然不是,好像是把我们输入的所有字符全都输入出来了,在循环中getchar为什么不会每次只取一个字符呢?无论它是否读取一个字符,定义的字符变量只能容纳一个字符,输出也不可能是一个类似字符串。而系统函数getchar一次读一个字符是非常肯定的。
如果换成有限次循环,再输入数量大于循环次数的字符,我们会发现输出的字符数和循环数相等,如果定义一个变量来跟踪循环,又发现循环是正常结束,也就是说类似字符串,是一次次输出的单个字符,也说明字符是一个一个获取的。
假设输入几个字符结束之后,按下回车,这时不应该进行读取吗?而多余的字符读取不到所以只剩第一个字符,所以输
C语言习题:文件操作输入输出、从标准输入逐个字符复制到标准输出
最新推荐文章于 2025-04-26 10:52:29 发布


864

被折叠的 条评论
为什么被折叠?



