gpt4 book ai didi

c - scanf 与 ^ 运算符

转载 作者:行者123 更新时间:2023-11-30 14:22:20 25 4
gpt4 key购买 nike

#include <stdio.h>

int main()
{
int a;
char msg[10];
scanf("%d",&a);
printf("%d\n",a);
scanf("%[^\n]s",msg);
printf("%s\n",msg);
return 0;
}

程序正在接受整数值并打印它,但第二个 scanf() 调用不接受任何内容。这是为什么?

^\n 对上下文中的 scanf 语句有何影响。

最佳答案

如果控制台看起来像这样:

123
abc

然后stdin将包含内容:123\nabc\n

使用 "%d" 格式字符串进行 scanf 调用后,stdin 现在将为:\nabc\n。请注意,\n 尚未被消耗。

说明符 %[^\n] (s 不应该在那里,它只会被视为额外的字符,然后立即使用)意味着读取每个字符直到 \n,因此由于字符串开头的 \n 之前没有任何字符,因此不会将任何内容存储到缓冲区,stdin 将保留为:\nabc\n


要解决此问题,请将第一个 scanf 格式字符串更改为 "%d\n",这样在读取数字后,\n 将被消耗。由于 %[^\n] 也不会使用 \n,因此您可能还需要将该格式字符串更改为 "%[^\n]\n".

关于c - scanf 与 ^ 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13827720/

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