显示除第一个参数外的* argv

时间:2015-08-15 03:27:29

标签: c

我是C的新手,这是一个简单的程序:

#include <stdio.h>
#define str char *

int main(int k, const str argv[]) {
    while(* argv) puts(* argv ++);
    return 0;
}

所以当我输入shell时,。/ mrrogramm somearg otherarg

我明白了:

myprogram somearg otherarg

我想做的是跳过第一个参数并且: somearg otherarg

重要的是我想保留* argv实现

我知道我可以做那样的事情:

#include <stdio.h>
#define str char *

int main(int k, const str argv[]) {
    int i = 0;
    while(i<k-1){
        puts(argv[++i]) ;
    }

    return 0;

}

但我想保留* argv实现

提前致谢

3 个答案:

答案 0 :(得分:3)

对于第一个版本的最小变化,您可以使用

while(*++argv) puts(*argv);

在你的主循环中。它跳过了论证&#34;零&#34;马上。 (测试)

答案 1 :(得分:1)

您可以创建一个变量来检查您是否处于循环的第一次迭代中。

int main(int k, const str argv[]) {
    int i = 0;
    while(*argv) {
        if (i != 0) puts(*argv++);
        i = 1;
    }
    return 0;
}

答案 2 :(得分:0)

我测试了这个并且它有效。没有seg故障..

#include <stdio.h>
#define str char *
int main(int k, const str argv[]) {
    *argv++;
    while(* argv) puts(* argv ++);
    return 0;
}