如何增加argv

时间:2014-03-04 10:00:20

标签: c command-line-arguments argv

int main(int argc,char *argv[])
{
    int f1,flag,n;
    if(argc<3)
    {
        printf("Correct format: ./a.out <fileName> <string>\n");
        exit(-1);
    }
    f1=creat(argv[1],0666);
    if(f1<0)
    {
        printf("Creatioon error\n");
        exit(f1);
    }
    n=strlen(argv[2]);
    printf("%d\n",n);
    while(n-->0)
    flag=write(f1,argv[2]++,1);
    if(flag<0)
    {
        printf("Write error\n");
        exit(flag);
    }
    close(f1);
    return 0;
}

这里flag=write(f1,argv[2]++,1);为什么我们要做argv[2]++,为什么要复制的文本长度为1?

2 个答案:

答案 0 :(得分:0)

增量是因为它在一个(愚蠢的)循环中:

while(n-->0)
  flag=write(f1,argv[2]++,1);

但是你的代码没有缩进,所以看起来有点困难。

argv[2]char *指向在命令行中作为第三个单词输入的字符串,因此递增它会将其逐步转换为字符串中的下一个字符。

这是错误的代码;它应该write(fl, argv[2], n);一次写出来。当然,仍然必须检查返回值,并且write()可以循环再次尝试,或者如果有部分写入则恢复。

答案 1 :(得分:0)

长度为1,因为write的第3个参数是1。

你可能想要这个:

/* write second command line argument to the file */
flag=write(f1, argv[2], strlen(argv[2]);