【发布时间】:2021-01-29 15:39:50
【问题描述】:
如何使用max_size 变量来仅获取所需的字符?
int max_size=64;
sscanf(p,"%s %(MAX_SIZE-1)[^\n]",a,b);
【问题讨论】:
-
您可以使用
sprintf创建scanf格式字符串。 -
简短的回答是“不”。您想为此使用的
*(类似于printf)被suppress-assignment 修饰符篡夺了scanf。 -
这只是
scanf的大约 17 个不同的严重限制之一。在几乎所有情况下,此功能根本不值得使用。如果您关心做任何复杂的事情 - 例如,在您的情况下,避免缓冲区溢出 - 无论您想要做什么,要么使用scanf是不可能的,要么是使用其他技术的三倍。 (是的,我同意,避免缓冲区溢出并不是“复杂的事情”,而是基本要求。) -
在C FAQ list 中查看question 12.15。
-
谢谢大家的快速响应,我设法用 sprintf 做到了