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);