使用C的字符串对齐

时间:2013-03-01 06:52:56

标签: 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,它就不能正确地为其他文件辩护。有解决方案吗?

3 个答案:

答案 0 :(得分:4)

您可以用星号替换常量宽度说明符(7)以获取可变宽度说明符。因此,以下代码的宽度说明符为strlen(big)

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

答案 1 :(得分: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;
}

答案 2 :(得分:0)

您可以在fprintf参数中指定字符串的长度。您还可以查看我的项目:libtprint - 一个打印表格数据的简单库,https://github.com/wizzard/libtprint。在那里,我使用各种技巧来证明字符串。

希望它有所帮助!