2013-03-01 28 views
2

所以我必須寫入一個文件的字符串以及該字符串的長度。輸出應該是這樣的:使用C的字符串理由

======= ===== 
merrily 7 
    row 3 
    your 4 
    boat 4 
gently 6 
    down 4 
    the 3 
    dream 5 
stream 6 
    life 4 
    is 2 
    but 3 
     a 1 

所以我有一個字符串數組稱爲char big[50]保存在列表中的最大長度的字符串。如果我使用strlen(big),那麼我會得到7,因爲merrily是該列表中最大的字符串,並且字數爲7.因此,我該如何以正當性打印它?我不能寫fprintf(fpOut, "%7s %d\n, table[i], strlen(table[i]);,因爲我的程序有多個用戶可以打開的文件,如果我使用%7s它不會正確地證明其他文件。有沒有解決這個問題的方法?

回答

1

可以用printf此:

#include <stdio.h> 

int main(int argc, char *argv[]){ 
    printf("%*s |\n", 7, "let"); 
    // or to file: fprintf(file, "%*s |\n", 7, "let"); 
    return 0; 
} 
+0

打印到一個文件,: -/ – 2013-03-01 07:01:44

+1

@Aniket只需使用'fprintf'而不是'printf'來爲文件做同樣的事情...... – 2013-03-01 07:14:00

4

可以更換恆定寬度說明(7)用星號,以獲得可變寬度說明。所以下面的代碼將有strlen(big)寬度說明符:

fprintf(fpOut, "%*s %d\n", strlen(big), table[i], strlen(table[i]); 
+0

謝謝!我不知道你能做到這一點。我非常欣賞這種見解。 – Nathan 2013-03-01 07:18:40

+0

沒問題,這是一個非常整潔(有用)的功能! – 2013-03-01 07:21:57

0

您可以指定在fprintf中參數的字符串的長度。你也可以看看我的項目:libtprint - 打印表格數據的簡單庫,https://github.com/wizzard/libtprint。在那裏我使用各種技巧來證明字符串是正確的。

希望它有幫助!