[英]How can I use `scanf_s("%[^\n]s")` with a limit to the number of characters allowed? C
如何使用scanf_s("%[^\n]s")
限制允许的字符数? C 例如: scanf_s("%10s", ...);
但是当%
之前有[^\n]
时,我该怎么做?
格式为"%[^\n]s"
s
任何作用。 删除那个s
。
可能OP想要类似的东西:
char buf[100];
...
// v---- Consume all leading white-space
if (scanf_s(" %[^\n]", buf, XXX sizeofbuf) == 1) {
// ^^^ ^^^^^^^^^^^^^ 2 arguments
Success();
} else {
Fail();
}
根据 C 标准,其中XXX
是(int)
(Visual) 或(rsize_t)
/无。
scanf_s()
不能移植到没有实现..._s
函数的系统。
scanf_s()
可能不会只读取一行,因为" "
读取的空白包括多行仅包含空白的行。
scanf_s()
是读取一行用户输入的首选fgets()
的不良替代品。 建议永远不要使用scanf_s()
或scanf()
直到你知道为什么有坏处。
选择:
char buf[100];
if (fgets(buf, sizeof buf, stdin)) {
Success();
} else {
Fail();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.