getchar在c语言中是什么意思?

什么是getchar?

在C语言中,getchar是一个标准函数,用于从标准输入流中读取一个单一字符。这个函数能够在处理字符输入时非常有用。

getchar函数的原型和参数

prototype:

int getchar(void);

parameters:

getchar函数不需要传递任何参数,它仅从标准输入流中读取单个字符。

使用getchar函数

使用getchar函数很简单,代码如下:

#include <stdio.h>

int main(void) {

int c;

printf("请输入一个字符:");

c = getchar();

printf("您输入的字符是:%c\n", c);

return 0;

}

代码执行结果如下:

请输入一个字符:a

您输入的字符是:a

每次调用getchar函数,它就从输入流中读取一个字符。我们可以把读取到的字符赋值给一个整型变量,仅仅是为了输出所输入的字符。

getchar函数的注意事项

换行符

我们在上面的代码中可以看到,程序等待用户输入字符时并没有输出一个换行符。这是因为在Windows系统中,输入回车(Enter)时会在输入流中添加一个额外的回车符(\r)和 换行符(\n)。因此,如果打印输出时不手动删除这些字符,程序就会产生错误的输出。

以下代码演示了在另一个Windows系统上打印回车符和换行符的输出:

#include <stdio.h>

int main(void)

{

int c;

printf("请输入一个字符:");

while ((c = getchar()) != '\n' && c != EOF)

{}

printf("回车和换行符:");

printf("(0x%x, 0x%x)\n", '\r', '\n');

return 0;

}

上述代码输出如下:

请输入一个字符:(用户输入一个字符并按回车键。)

回车和换行符:(0xd, 0xa)

另一方面,如果我们在Linux或类Unix系统上使用getchar时,只会看到一个换行符,并且输出不会受到影响。

EOF

在Unix系统上,我们可以通过键入Ctrl + D来发出EOF信号,告诉程序已经到达输入结束。在Windows系统上,我们使用Ctrl + Z。

在读取到EOF之后,getchar函数将始终返回-1,因此我们可以使用此特殊值终止循环。

以下代码演示了如何使用getchar读取输入,直到EOF:

#include <stdio.h>

int main(void)

{

int c;

while ((c = getchar()) != EOF) {

printf("%c", c);

}

printf("\n");

return 0;

}

上述代码将打印出输入中的所有字符,直到用户输入Ctrl + Z或Ctrl + D。

缓冲区

在编写程序时,我们时常会使用缓冲区,以便一次性处理多个输入。

下面是一个示例程序,它等待用户输入多个整数,然后计算它们的平均值。

#include <stdio.h>

int main(void)

{

int count = 0, sum = 0, n;

float avg;

while (scanf("%d", &n) == 1)

{

count ++;

sum += n;

}

if (count > 0) {

avg = (float) sum / count;

printf("平均值是 %.2f\n", avg);

}

return 0;

}

上述代码会从终端上读取任意数量的整数(每个整数应单独输入),直到遇到EOF。它将所有这些数字加在一起,然后计算它们的平均值,并输出结果。

后端开发标签