C中的scanf()问题
我正在自学如何使用C语言编写代码。为了更深入地研究后者,我正在做一些基本练习,因此,今天我在使用C中的scanf()问题,c,scanf,C,Scanf,我正在自学如何使用C语言编写代码。为了更深入地研究后者,我正在做一些基本练习,因此,今天我在使用scanf()指令时遇到了一个小问题。事实上,以下代码: int main() { char inputOne; char inputTwo; printf("Insert a char: "); scanf("%c", &inputOne); // &inputOne is the pointer to inputOne. printf("Insert
scanf()
指令时遇到了一个小问题。事实上,以下代码:
int main() {
char inputOne;
char inputTwo;
printf("Insert a char: ");
scanf("%c", &inputOne);
// &inputOne is the pointer to inputOne.
printf("Insert another char: ");
scanf("%c", &inputTwo);
if (inputOne == inputTwo) {
printf("You have inserted the same char!\n");
printf("Chars inserted: %c, %c\n", inputOne, inputTwo);
} else {
printf("You have inserted two different chars!\n");
printf("Chars inserted: %c, %c\n", inputOne, inputTwo);
}
}
编译时不会返回任何错误,但在终端上启动应用程序时,无法插入第二个字符。
以下是发生的情况的示例:
Macbook-Pro-di-Rodolfo:~ Rodolfo$ /Users/Rodolfo/Documents/GitHub/Fondamenti\ di\ C/esempio-if-else ; exit;
Insert a char: a
Insert a second char: You have inserted two different chars!
Chars inserted: a,
logout
[Process completed]
有人能解释一下为什么会发生这种情况吗?第二个字符的输入是
换行符。您可以再次使用inputWO
来防止:
int main() {
char inputOne;
char inputTwo;
printf("Insert a char: ");
scanf("%c", &inputOne);
// &inputOne is the pointer to inputOne.
printf("Insert another char: ");
scanf("%c", &inputTwo);
scanf("%c", &inputTwo);
if (inputOne == inputTwo) {
printf("You have inserted the same char!\n");
printf("Chars inserted: %c, %c\n", inputOne, inputTwo);
} else {
printf("You have inserted two different chars!\n");
printf("Chars inserted: %c, %c\n", inputOne, inputTwo);
}
}
此问题数百个重复项中的一个。@user3121023转换规范之前或之后的空格数是否会影响最终结果?换句话说,编译器的scanf(“%c”,&inputwo)
和scanf(“%c”,&inputwo)
相同吗?@user3121023很抱歉,在我的第一条评论中没有正确显示,但我的意思是如果scanf()
的行为方式与引号和转换规范之间的空格数无关%
。换句话说,如果%c
和%c
输出相同的内容。