我是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实现
提前致谢
答案 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;
}