2016-03-01 84 views
-1
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(int args, char *argv[]) { 
    int i = 0; 
    for (i = 0; i < args; i++) 
     printf("\n%s", argv[i]); 
    return 0; 
} 

截至目前這個程序打印出任何寫在命令行上的東西。我將如何使它做到相反?例如,如果我輸入「狗」,它應該說「神」。C編程命令行參數

+0

我很困惑的你在問什麼。請詳細說明。 –

+3

'argv [i]''''strrev(argv [i])' – BLUEPIXY

+0

當我試圖讓我的編譯器給我一個錯誤:「/tmp/ccfecPpz.o:backwards.c:(.text+0x3f):未定義的引用'strrev' /tmp/ccfecPpz.o:backwards.c:(.text+0x3f):重定位被截斷爲適合:未定義符號'strrev'的R_X86_64_PC32「。 –

回答

2

試試下面的代碼:

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

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

我不得不在for循環之外初始化j,但在完成之後,它完美地工作了。謝謝! –

+0

如何讓它從命令行垂直打印? –

1

我會把它分解成兩個更小的任務。

  1. 寫一個幫助函數,給定一個字符串,按照相反的順序打印出來。爲此,您可以使用一個從字符串末尾開始的循環,並逐個打印每個字符,然後在陣列中反向移動。

  2. 在循環內調用main中的幫助函數以打印argv數組中的每個字符串。

由於這看起來像一個家庭作業,我會離開它在這。如果您在步驟(1)時遇到問題,那麼在跳入此問題之前,您可能需要查看一下如何進行字符串處理。

1

IDEOne Link

int main(int argc, char *argv[]) { 
    for (int i = 0; i < argc; ++i) 
    { 
     for(char* c = &argv[i][strlen(argv[i])-1]; c >= argv[i]; putchar(*c--)) ; 
     putchar(' '); 
    } 
    return 0; 
}