2014-09-27 51 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; 
    } 
}