scanf() 可变长度说明符

2023-11-29

如何使用变量来指定最大字符数scanf()应该读进去吗?

例如使用printf()你可以像这样使用 *

#define MAXVAL 5
printf("Print at maximum MAXVAL chars: %.*s\n", MAXVAL, "myStringHere");

这只会打印 5 个字符,我该如何制作scanf只读取MAXVAL? MAXVAL 必须用作长度说明符。我cannot简单地做

scanf("%5s", string);

现在我只能想到使用读入一个大数组scanf然后使用ssprintf将字符串存储到我的长度有限的字符串中。然而,使用长度说明符会容易得多。


您可以使用 C 预处理器来帮助您完成此任务。

#define STR2(x) #x
#define STR(X) STR2(X)
scanf("%" STR(MAXVAL) "s", string);

该处理器结合了"%" STR(MAXVAL) "s" to "%5s"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scanf() 可变长度说明符 的相关文章

随机推荐