C 把一个论点打印两次
我想把一个额外的参数传递给C 把一个论点打印两次,c,printf,C,Printf,我想把一个额外的参数传递给printf并打印两次,例如 printf("%s%s","somestring"); // prints somestringsomestring 有什么方法可以做到这一点吗?如果您使用的是Linux或其他类似UNIX的系统,则可以使用$指定参数编号: printf("%1$s%1$s\n", "hello"); 在本例中,1$表示“使用第一个参数”。我们还多次使用此语法,以便可以多次使用给定的参数 详情如下: 参数必须正确地(在类型升级之后)与 转换
printf
并打印两次,例如
printf("%s%s","somestring"); // prints somestringsomestring
有什么方法可以做到这一点吗?如果您使用的是Linux或其他类似UNIX的系统,则可以使用
$
指定参数编号:
printf("%1$s%1$s\n", "hello");
在本例中,1$
表示“使用第一个参数”。我们还多次使用此语法,以便可以多次使用给定的参数
详情如下:
参数必须正确地(在类型升级之后)与
转换说明符。默认情况下,参数按顺序使用
给定,其中每个“*”和每个转换说明符要求下一个
参数(如果使用的参数不够多,则为错误)
给定)。您还可以在以下位置明确指定采用哪个参数:
通过写入“%m$”而不是
“%”和“m$”而不是“”,其中十进制整数m表示
所需参数在参数列表中的位置,已编制索引
从1开始。因此,
printf("%*d", width, num);
及
printf("%2$*1$d", width, num);
它们是等价的。第二种样式允许重复引用
同样的论点。C99标准不包括使用“$”的样式,
它来自单一的UNIX规范。如果使用“$”创建样式
如果使用,则必须在整个转换过程中使用
参数和所有宽度和精度参数,但可能是混合的
使用不使用参数的“%%”格式。可能没有
使用“$”指定的参数数量的差距;例如,如果
指定了参数1和3,还必须指定参数2
格式字符串中的某个位置
在ISO C中,您需要使用一个变量(或varargs列表)来保存该值,然后在参数列表中指定它两次。这是实际需要还是理论问题?非常感谢。当系统允许时,我将接受。只需按照
man 3 printf
的说明:“C99标准不包括使用“$”的样式,它来自单一的UNIX规范。”^换句话说,这是一个POSIX扩展。那么,我能做些什么printf(“hello%s”)
并让它打印hellohello%s
,例如打印第0个参数<代码>0$不起作用。@0xBADC0DE不起作用。格式字符串定义了以下参数。它不能以那种方式引用自己。