2014-09-27 54 views
0

所以我有一個字符串傳遞到主功能讀取字符串字符:INT主(INT的argc,字符* argv的[])由字符用C

我明白的argc(其2在這種情況下),但不要不明白我怎樣才能逐字讀取argv []字符? 當我打印argv [0]不應該打印該字符串的字符數組中的第一個字符?

感謝

+3

顯示你的代碼! – 2014-09-27 07:21:37

+1

在命令行上傳遞的值以'argv [1]'開頭。它的第一個字符是'argv [1] [0]'。 – 2014-09-27 07:22:55

+1

argv []是一個字符串數組(空終止的字符數組)。因此argv [0]給出第一個字符串。要獲得第一個字符串的第一個字符,請使用* argv [0]或argv [0] [0]。 – 2014-09-27 08:18:21

回答

2

樣品

#include <stdio.h> 

int main(int argc, char *argv[]){ 
    int i,j; 
    for(i=0; i<argc; ++i){ 
     for(j=0; argv[i][j] != '\0'; ++j){ 
      printf("(%c)", argv[i][j]); 
     } 
     printf("\n"); 
    } 
    return 0; 
} 
+0

謝謝,我發誓我嘗試了同樣的事情,但沒有奏效。 ++我vs i ++有什麼區別嗎?我無法理解別人的解釋。 – aNobody 2014-09-27 07:43:24

+0

請分享無法使用的代碼。不,在* this *上下文中,前置或後置增量運算符沒有區別。如果它是被分配或評估的表達式的一部分,它就會產生變化,而不是單獨的增量操作。 – 2014-09-27 07:45:27

+0

@aNobody當你問問題時,你應該一起發佈代碼,這些代碼不能很好地工作。 – BLUEPIXY 2014-09-27 07:47:05

0

再舉一個例子:

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

int main (int argc, char *argv[]) 
{ 
    if(argc != 2) 
    { 
     //argv[0] is name of executable 
     printf("Usage: %s argument\n", argv[0]); 
     exit(1); 
    } 
    else 
    { 
     int i; 
     int length = strlen(argv[1]); 
     for(i=0;i<length;i++) 
     { 
      printf("%c",argv[1][i]); 
     } 
     printf("\n"); 
     return 0; 
    } 
}