章节大纲

  • 在格式字符串中,我们可以使用 %x 移动参数指针 va_list 到下一个可选参数。我们也可以直接将指针移动到第 k 个可选参数。这是使用格式字符串的参数字段完成的(形式为 k$)。以下代码示例使用 "%3$.20x" 打印出第三个可选参数的值(数字3),然后使用 "%6$n" 写入第六个可选参数(变量 var,其值将变为 20)。最后,使用 "%2$.10x",它将指针移回到第 2 个可选参数(数字 2),并打印出来。你可以看到,使用这种方法,我们可以自由地前后移动指针。这种技术非常有用,可以简化任务中格式字符串的构建。
     
    #include <stdio.h>
    int main()
    {
        int var = 1000;
        printf("%3$.20x%6$n%2$.10x\n", 1, 2, 3, 4, 5, &var);
        printf("The value in var: %d\n",var);
        return 0;
    }
    ----- Output ------
    seed@ubuntu:$ a.out
    000000000000000000030000000002
    The value in var: 20