gpt4 book ai didi

c - scanf() 格式字符串中尾随空格有何影响?

转载 作者:行者123 更新时间:2023-11-30 16:11:39 27 4
gpt4 key购买 nike

此代码中 scanf("%d")scanf("%d ") 有什么区别,区别在于格式中的尾随空白字符串?

#include <stdio.h>

int main(void)
{
int i, j;

printf("enter a value for j ");
scanf("%d ",&j);
printf("j is %d\n", j);
printf("enter a value for i ");
scanf("%d", &i);
printf("i is %d\n", i);
return 0;
}

当我在格式说明符后添加空格(如 scanf("%d ", &j);)时,scanf() 函数实际上如何工作?

最佳答案

scanf 格式中的空白字符会导致它显式读取并忽略尽可能多的空白字符。因此,使用 scanf("%d ", ... ,在读取数字后,它将继续读取字符,丢弃所有空格,直到在输入中看到非空格字符。空白字符将作为输入函数读取的下一个字符保留。

使用您的代码:

printf("enter a value for j ");

scanf("%d ",&j);

printf("j is %d \n", j);

它将打印第一行,然后等待您输入数字,然后继续等待数字后面的内容。因此,如果您只输入 5Enter,它就会显示为挂起 - 您需要输入另一行并包含一些非空白字符才能继续。如果您随后输入 6Enter,它将成为 i 的值,因此您的屏幕将如下所示:

enter a value for j 5
6
j is 5
enter a value for i i is 6

此外,由于大多数 scanf %-转换也会跳过前导空格(除了 %c%[%n 之外), % 转换之前的空格是无关紧要的("%d""%d" 的作用相同)。因此,在大多数情况下,您应该避免在 scanf 转换中使用空格,除非您知道您特别需要它们来实现其特殊效果。

关于c - scanf() 格式字符串中尾随空格有何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58559710/

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