【发布时间】:2020-07-08 22:58:05
【问题描述】:
所以我一直在自学 C,并且从“stdio.h”中遇到了“getchar()”和“putchar()”方法。据我了解,“getchar()”从文本流中获取最新的字符并将其存储到一个变量中,而“putchar()”则获取该变量并将其打印到终端。
所以我写了以下代码:
#import<stdio.h>
void main () {
printf("Enter a character and it will be repeated back to you:\n");
int c;
while (c != EOF) {
c = getchar();
printf("You entered : ");
putchar(c);
printf("\n");
}
}
我希望它能够读取键盘输入并将其一次打印到屏幕上一个字符。例如,如果我输入“home”,输出将是:
您输入了:h 你输入了:o 你输入了:米 你输入了:e
但我得到了:
首页 你输入了:h 你输入了:o 你输入了:米 你输入了:e
字符被打印为即时打字,然后重复。我不太确定我在这里做错了什么,或者我是否做错了什么,只是不太了解这个概念。谁能解释这里发生了什么?
【问题讨论】:
-
该程序表现出未定义的行为,因为
c在第一次使用时未初始化。阅读时还会将EOF传递给putchar,这是不应该的。 -
void main()应该是int main(void)。如果您有一本书告诉您使用void main(),那么它的作者对C 的了解还不够多,因此无法撰写有关它的文章。 (除非它指的是一些特定的独立实现,但这不太可能。) -
本书由 Brian W、Kercnighan 和 Dennis M. Ritchie 撰写。目前,主函数只是“main(){}”,但我添加了 void,因为我有 C# 和返回类型之类的经验。
-
您将从
#include <stdio.h>获得更多里程。把import留给python... -
在 K 和 R 时代,返回类型默认为
int,但是,在现代 C 中,这是一个问题,您必须明确声明:int作为返回类型
标签: c