程序很简单,关键是参数中的|是SH的一个操作符号(管道),所以要在参数上加上双引号,即:
run "11|22|33"
程序如下:
//---------------------------------------------------------------------------
#include
int main(int argc, char* argv[])
{
int i;
if (argc>1) {
for (i = 0; argv[1][i]; i++) {
if (argv[1][i]=='|') {
putchar('\n');
}
else putchar(argv[1][i]);
}
}
putchar('\n');
return 0;
}
//---------------------------------------------------------------------------
你这里用了管道符【|】,这个程序没办法写,因为LINUX会理解为运行了三个程序:
run 11
22
33
并且上面三个程序(22和33都被解释为程序了)输入输出互为管道
你理解肯定有问题,请再考虑考虑,LINUX命令行里面大于号小于号竖线都不是随便能用的。
|是管道运算符,1个管道运算符会看作前后是两个程序,并且把前边一个的程序运行结果输入到后边一个程序中.所以你的这个要求不能完成.同理的还有'&',"&&","||"等.
我写了一个程序,拿','作为分隔字符的,改成其他字符也很方便.
#include
int main(int argc,char *argv[])
{
if(argc != 2)
{
printf("please input correct words\n");
return -1;
}
char **temp = argv;
while(1)
{
if(*temp[1] == NULL)
break;
else
temp[1]++;
while(*temp[1] != ',')//把','更改为其他字符就可以决定用那个字符作为分割。
{
if(*temp[1] == NULL)
break;
printf("%c",*temp[1]);
temp[1]++;
}
printf("\n");
}
return 0;
}
我写了个简单的,简单的容错机制,需要输入至少3个数字,然后全部输出。为了简单,输入的时候,数字之间只有空格即可,不用“|”分割。
程序如下,文件名为run.c:
#include
#include
int main( int argc, char **argv )
{
if( argc < 4 )
{
printf("You need 3 number at least!\n");
exit (0);
}
int i;
for(i=0; i
printf("\n");
return 1;
}
编译命令:gcc -o run run.c
然后运行:输入“./run 11 22 33”,输出“11 22 33”,如果是输入少于3个数字,则输出“You need 3 number at least!”。
希望对你有所帮助。