gpt4 book ai didi

c - 为什么输入缓冲区中只有一个(二分之一)空格被视为字符?

转载 作者:行者123 更新时间:2023-12-02 19:55:55 25 4
gpt4 key购买 nike

我试图了解输入缓冲区的工作原理。于是我写了一段代码:

    #include<stdio.h>
int main(){
int a,b;
char c,d;
scanf("%d %d",&a,&b);
scanf("%c %c",&c,&d);
printf("%d*%d*%c*%c",a,b,c,d);
return 0;
}

现在输入:

    5 4 qw

所以我期望我的输出是:

    5*4* *

输出:

    5*4* *q

有人可以解释一下为什么它只将两个空格中的一个(5 和 4 之间的一个,4 和 q 之间的另一个)视为一个字符,而不是两者都视为一个字符?两个空格中哪一个被打印为一个字符?

最佳答案

如果我们开始

scanf("%d %d",&a,&b);

然后将读取 54,将输入缓冲区保留为 "qw"

现在当你这样做的时候

scanf("%c %c",&c,&d);

第一个 "%c"读取空格,而另一个则读取 'q'' w' 将保留在输入缓冲区中。

这是因为 "%c" 格式不会跳过空格。它将读取输入缓冲区中的任何字符。

如果您读过例如this scanf (and family) reference您将看到格式 "%c""%[""%n" 丢弃前导空白。

关于c - 为什么输入缓冲区中只有一个(二分之一)空格被视为字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509032/

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