【问题标题】:Making Format String with sprintf使用 sprintf 制作格式字符串
【发布时间】:2015-03-01 22:51:56
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c format printf


    【解决方案1】:

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

    【讨论】:

    • 只是为了确保使用scanf(format, input) 是有效的,其中format"%50[^\n]s"inputchar [50]
    • 不,最大字符数比接收数组的大小小一。 s 也是格式没用。实际解决方案是`snprintf(format, sizeof format, "%%%d[^\n]", MAX_LENGTH-1);
    猜你喜欢
    • 2014-01-22
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多