gpt4 book ai didi

C 程序设计 - 空格在 scanf() 中的作用

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:58 27 4
gpt4 key购买 nike

我写了下面的代码:

#include <stdio.h>
int main()
{
int a, b;
printf("Enter values of a and b\n");
scanf(" %d%d ", &a, &b); // Note the two spaces before and after %d
// ^This^
printf("a = %d b = %d\n", a, b);
return 0;
}

程序运行是这样的:

aps120797@XENON-PC:/mnt/d/Codes/LetUsC$ ./a.out
Enter values of a and b
1
2
3
a = 1 b = 2

我的问题是,为什么它采用三个输入而不是两个(两个 %d 在 scanf() 中),即使它采用三个,为什么它跳过最后一个?

最佳答案

格式字符串中的空格表示跳过输入中的任何空白序列(空格、换行符、制表符),并在到达第一个非白色字符或输入末尾时停止扫描。下一个字符留在输入缓冲区中,因此它可以被下一个格式运算符(如果有的话)或下一个输入操作(如果您在 getc() 之后调用 )读取code>scanf(),它将读取 '3' 字符。

当您在格式字符串末尾放置一个空格时,它会跳过 2 之后的换行符,并继续扫描直到到达下一个非白色字符。所以它必须在停止之前到达 3

关于C 程序设计 - 空格在 scanf() 中的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534295/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com