C 用sprintf制作格式字符串

C 用sprintf制作格式字符串,c,format,printf,C,Format,Printf,我想通过为字符串输入指定MAX_LENGTH来创建一个将在scanf中使用的格式字符串。我得到的是以下内容,但编译器说它是错误的: const int MAX_LENGTH = 50; char format[9]; sprintf(format, "\%%d[^\n]s", MAX_LENGTH); 编译器说格式字符串不使用数据参数。第一个%应该转义,第二个是%d的一部分,应该从MAX\u LENGTH读入。我如何做到这一点?顺便说一句,在换行之前,格式字符串应最多读取最大长度个字符。此处

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

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

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

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

此处应使用
%%
,而不是
\%

对%符号进行转义,以确保使用
scanf(格式,输入)
格式
%50[^\n]s是有效的
输入
是否为
char[50]
?否,最大字符数比接收阵列的大小小一个。而且
s
的格式是无用的。实际的解决方案是` snprintf(格式,sizeof format,“%%%d[^\n]”,最大长度为1);