gpt4 book ai didi

c - scanf ("%[^\n]") 和 scanf ("%s") 之间的区别?

转载 作者:太空宇宙 更新时间:2023-11-04 06:45:26 29 4
gpt4 key购买 nike

我已经阅读了扫描集的行为。通过研究和测试,我遇到了一个问题。

难道 scanf("%[^\n]") 的行为与 scanf("%s") 一样吗?

scanf("%s") 正在消耗字符,直到在 stdin 中找到空白字符,例如 \n 字符.所以结果应该和scanf("%[^\n]")完全一样。


例如:

char str[100];
scanf("%99[^\n]s", str);

相比于:

char str[100];
scanf("%99s",str);

所以我的问题是:

  1. 行为是否相同,因为 scanf("%s") 在尾随空白字符(例如换行符)处停止?

  2. 为什么我应该实现 scanf("%[^\n]")scanf("%s") 已经执行相同的操作?

非常感谢。

最佳答案

您似乎误以为 scanset 是 %s 的某种修饰符,如您的示例所示:

scanf("%[^\n]s", str);

这是一个 scanf 格式的字符串,总是无法匹配末尾的文字 's'

相反,%[ 是与 %s 完全不同的转换说明符。 %s 在开始之前消耗并忽略任何初始空白,然后在空白处停止。 %[ 根本不会忽略前导空格,只会在不匹配的字符处停止——它不会特殊处理空格。

关于c - scanf ("%[^\n]") 和 scanf ("%s") 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58563758/

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