繁体   English   中英

如何使用 `scanf_s("%[^\n]s")` 限制允许的字符数? C

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM