How can I clean up misaligned columns in text?

前端 未结 6 672
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-31 09:08

I have a C program that outputs two columns, utterly misaligned. The reason for the misalignment is lengths of words in the first column are very different.

I have an o

6条回答
  •  悲哀的现实
    2021-01-31 09:53

    Presumably you are using printf to output the columns in the first place. You can use extra modifiers in your format string to make sure things get aligned.

    • To print a column of a specific width (right-justified), add the width before the formatting flag, e.g., "%10s" will print a column of width 10. If your string is longer than 10 characters, the column will be longer than you want, so choose a maximum value. If the string is shorter, it will be padded with spaces.
    • To left-justify a column, put a - sign in front, e.g., "%-10s". I like to left-justify strings and right-justify numbers, personally.
    • If you are printing addresses, you can change the fill characters from spaces to zeroes with a leading zero: "%010x".

    To give a more in depth example:

    printf("%-30s %8s %8s\n", "Name", "Address", "Size");
    for (i = 0; i < length; ++i) {
        printf("%-30s %08x %8d\n", names[i], addresses[i], sizes[i]);
    

    This would print three columns like this:

    Name                            Address     Size
    foo                            01234567      346
    bar                            9abcdef0     1024
    something-with-a-longer-name   0000abcd     2048
    

提交回复
热议问题