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不起作用。格式字符串定义了以下参数。它不能以那种方式引用自己。