如何垂直打印命令行参数?

时间:2016-03-01 06:16:42

标签: c arrays string

我知道如何向后,向前等打印它们。但是,我无法垂直地从命令行打印一些东西。谁能解释一下?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
    int j;
    int i = 0;
    for (i = 1; i < argc; i++)
    {
        char *tmp = argv[i];
        int len = strlen(argv[i]);
        for(j = len-1; j > -1; --j)
            printf("%c",tmp[j]);
        printf("\n");
    }
    return 0;
}

这是我从命令行向后打印的东西,但是如何让它垂直打印?

1 个答案:

答案 0 :(得分:1)

我想你想要像

这样的东西
a a a a
r r r r
g g g g
1 2 3 4

所以想法是在第一行打印每个arg的第一个char,第二行是下一个char,直到结束

int main(int argc, char *argv[]) {
    int j;
    int i = 0;
    int argsLength[argc];
    int maxLength = 0;

    // get lengths or args
    for (i = 0; i < argc - 1; i++)
    {
        argsLength[i] = strlen(argv[i+1]);
        if(argsLength[i]>maxLength) {maxLength = argsLength[i];}
    }
    for (i=0;i<maxLength;i++) 
    {
        for(j=0;j<argc-1;j++) {
            if(argsLength[j]<i) {
                printf("%c ",argv[j+1][i]);
            }else{
                printf("  "); // put a blank when not char should be printed
            }
        }
        printf("\n"); 
    }
    return 0;
}