2016-03-01 56 views
-4

我知道如何將它們向後,向前等打印出來。但是,我在垂直打印命令行時遇到問題。誰能解釋一下?如何垂直打印命令行參數?

#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; 
} 

這是我從命令行向後打印的東西,但是如何使它垂直打印?

+2

你究竟是什麼意思的垂直?請詳細描述一下,並告訴我們你到目前爲止所嘗試過的。 –

+0

我編輯它以顯示我有什麼。 –

+3

您發佈的代碼向後打印參數,但水平。控制檯只能水平打印,因此您必須「轉置」您的邏輯,即切換行和列的訪問權限:在第一行中打印所有參數的第一個字母,在第二行中打印字符串的第二個字母。當然,您必須確保字符串的字母數與您爲每個字符串打印的列數一樣多。 –

回答

1

我想你想擁有像

a a a a 
r r r r 
g g g g 
1 2 3 4 

這樣的想法會在第一行打印每個arg的第一個字符,在第二行的下一個字符,直到最後

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; 
}