2

所以我必须将字符串以及该字符串的长度写入文件。输出应如下所示:

======= =====
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它就不能正确地证明其他文件是正确的。有没有解决方案?

4

3 回答 3

4

您可以用星号替换恒定宽度说明符 (7) 以获得可变宽度说明符。所以下面的代码将有一个宽度说明符strlen(big)

fprintf(fpOut, "%*s %d\n", strlen(big), table[i], strlen(table[i]);
于 2013-03-01T06:59:18.817 回答
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;
}
于 2013-03-01T06:59:01.503 回答
0

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

希望能帮助到你 !

于 2013-03-20T21:07:46.517 回答