使用 sprintf 制作格式化字符串

Making Format String with sprintf

我想通过为字符串输入指定 MAX_LENGTH 来创建将在 scanf 中使用的格式字符串。我有以下内容,但编译器说这是错误的:

const int MAX_LENGTH = 50;
char format[9];

sprintf(format, "\%%d[^\n]s", MAX_LENGTH);

编译器说格式字符串没有使用数据参数。第一个 % 应该被转义,第二个是 %d 的一部分,应该从 MAX_LENGTH 读入。我该如何做到这一点?顺便说一句,在到达换行符之前,格式字符串最多应读取 MAX_LENGTH 个字符。

这里的 % 符号应该使用 %% 进行转义, 而不是 \%.