- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码。
#include <stdio.h>
int main () {
char letter1;
char letter2;
printf("Enter Letter 1: ");
letter1 = getchar();
printf("\n");
printf("Enter Letter 2: ");
letter2 = getchar();
printf("\n");
printf("%c - %c\n", letter1, letter2);
return(0);
}
我正在尝试使用getchar()
定义letter1
和letter2
,但它仅适用于 letter1
,然后设置letter2
的值至'\n'
。有谁知道解决此问题的方法,以便我可以为这两个变量键入值?
最佳答案
这是因为当您按下第一个字母并键入 Enter 键时,您会将字母的代码和 '\n'
依次发送到输入缓冲区,从这里它将被消耗。
因此,第一个 getchar()
获取您输入的字母的代码,因此该字母会从输入缓冲区中删除,但 \n
的代码仍然会被消耗通过下一个 getchar()
。
为了避免这种情况,您需要继续从输入缓冲区进行消耗,直到 '\n'
被消耗。
这样做的一种方法是
int c;
while( (c=getchar())=='\n' && c!=EOF);
只要读取的字符是 \n
并且未达到 EOF,就会继续从输入缓冲区消耗数据。 getchar()
出错时将返回 EOF
。
int letter1, letter2;
int c;
printf("Enter Letter 1: ");
letter1 = getchar();
printf("\n");
printf("Enter Letter 2: ");
while( (c=getchar())=='\n' && c!=EOF);
letter2=c;
printf("\n");
printf("%c - %c\n", letter1, letter2);
编辑:正如评论中所指出的,请注意 getchar()
返回一个 int
而不是 char
。请参阅this发布。
关于c - 使用 getchar();定义多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51577409/
我很抱歉我英语不好。 让我们看看下面的代码。 main = getChar 首先,main会被求值,它的值是“getChar”,但是编译器不知道“getChar”的值,所以编译器会求值“getChar
我正在尝试比较用户插入的两个(或更多)输入。我正在为它使用 getchar() 函数,但它似乎不起作用......我需要先检查它的字母(英文),以及是否连续没有 2 个(或更多)大写或小写字母。这是我
当我想弄清楚 getchar() 到底做了什么时,这一小段 loop 确实让我感到困惑。 int i; int c; for (i = 0; i 验证您的输入。 因此,您应该在完成 getchar 后
#include int main(){ char ch; while((ch=getchar())!=EOF){ putchar(ch); } cha
我在关注《C Primer Plus》这本书,遇到这样一段代码: // echo_eof.c -- repeats input to end of file. #include int main(v
我只是编程的初学者。我正在学习 K&R 的书《C 编程语言》。我一边看一边对这个问题越来越好奇——当有一个循环从输入中一个一个地获取字符时,我在循环中放置了一个输出函数,我认为其结果就像在输入每个字符
人们通常会提到 while( getchar() != '\n' ) 当谈到清除输入缓冲区或溢出时。 fgetc 或 getc 也可以。例如: while( fgetc(stdin) != '\n'
一旦遇到'~',之后的任何内容都不会被打印出来,控制就出来了while循环 while((c = getchar()) != '~') { putchar(c); printf(" "
我有一个执行大量处理的小程序。您可以通过按回车键打印进度。 我实现它的方法是在主线程中完成处理,同时我有一个 pthread 不断循环 getchar() 以等待输入键。 问题是当我完成处理时。发生这
我试图解决 K&R 中的问题 1.6。问题是—— 验证表达式getchar() != EOF 为 0 或 1。 我找到了一个可行的解决方案: #include int main(){ int
我正在尝试开发一个(简单的)个人项目,它使用经典的“MOD 10”规则充当信用卡验证器。 我在项目的第一部分遇到了一些困难。 目标是这样的: 从用户那里获取 16 个字符,一次一个。 每输入一个字符,
对于我的一个练习,我们需要逐行阅读并仅使用 getchar 和 printf 输出。我正在关注 K&R,其中一个示例显示了使用 getchar 和 putchar。根据我的阅读,getchar() 一
我只是想知道如何 getchar() 实现了吗?是不是像下面这样?以这种方式读取单字节效率非常低。它是否使用一些缓冲? 伪代码: int getchar() { char buf[1];
在 K&R 书中的以下代码示例中,如果我将 putchar(c) 替换为 printf("%c", c),代码的工作方式相同。但是,如果我用 printf("%d", c) 替换它,它会给出乱码输出。
我想选择性地中止 getChar行动。我需要以下功能: getChar' :: (Char -> IO ()) -> IO (IO ()) 如果是abort IO ()) -> IO (IO ())
所以我知道 getchar() 在输入结束或发生错误时返回 EOF。我也知道我可以通过 ferror(stdin) 和 feof(stdin) 来检查哪些情况发生了。我想知道特别是在什么情况下会发生错
我无法忽略空格/制表符。当用户从命令提示符输入字符时,它应该只接受除空格或制表符空格之外的任何字符。 例如: $ ./a.out Character: = 那么,就是= 如果 $ ./a.out Ch
我正在使用 chrome devtools network API和下面的代码,但总是在我打开 devtool 窗口 (F12) 时启动警报窗口。有什么方法可以在不打开该窗口的情况下启动警报,例如,当
所以我知道 getchar() 在输入结束或发生错误时返回 EOF。我也知道我可以通过 ferror(stdin) 和 feof(stdin) 来检查哪些情况发生了。我想知道特别是在什么情况下会发生错
所以我一直在自学 C,并且遇到了来自“stdio.h”的“getchar()”和“putchar()”方法。据我了解,“getchar()”从文本流中获取最新的字符并将其存储到一个变量中,而“putc
我是一名优秀的程序员,十分优秀!