簡體   English   中英

在C中打印格式化字符串

[英]Printing formatted string in C

所以我有一個長度為10的字符串。我想要打印4-6 [包括兩者]的字母,我希望跨越特定長度L的輸出,數字位於右側。

例如

如果我有原始字符串123456789 ,則以下代碼應以后續方式顯示。

printf(Original);
printf(from 4-6, over 5 spaces)

輸出:

123456789
  456

那是456分布在5個空格並且向右縮進。

我怎么用C做?

編輯1:如果我的寬度不恆定怎么辦,並且我有一個變量,它決定了寬度。 類似地,子串的長度是變量。 現在有辦法嗎?

我能做點什么嗎

printf("%%d.%ds",width,precision,expression);

很直接:

printf("%5.3s\n", Original + 4);
         ^ ^
         | |
         | +--- precision, causes only 3 characters to be printed
         |
         +----- field width, sets total width of printed item

由於右側調整是默認值,因此您可以獲得所需的輸出。

精度“節省”我們不必將三個字符提取到一個正確終止的字符串中,非常方便。

通過將width指定為*並傳遞int參數,可以將動態值用於精度或字段寬度(當然也可以是兩者):

const int width = 5, precision = 3;
printf("%*.*s\n", width, precision, Original + 4);
#include <stdio.h>

int main(void)
{
    char *original = "123456789";

    printf("%5.3s\n", original + 3);
    return 0;
}

編輯:

如果你想要一個基於變量的精度:

int prec = 2;

printf("%5.*s\n", prec, original + 3);

......寬度相同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM