计算参数的长度

Calculate the length of the arguments

代码:

int my_strlen(char *string){
    int i;
    for(i = 0; string[i] != '[=10=]'; i++);
    return i;
}
int main(int argc, char* argv[]){
    int length;
    for(int i = 1; i < argc; i++){
        length = my_strlen(argv[1]);

    }
    printf("Length of the command line args: %d\n", length);
}

输出:

$ ./a.out guy oneguy
$ Length of the command line args: 6

出于某种原因,它只计算了最后一个参数,而忽略了其他参数。我期待得到 10(长度)。

任何帮助都会很棒。

谢谢。

int length = 0; // Don't forget to initialize to 0.
for(int i = 0; i < argc; i++) { // Start from index 0, not 1, to loop through every argument.
    length += my_strlen(argv[i]); // Use i as index to argv to access each argument one by one.
                                  // Add result of my_strlen to length.
}
  • 第 1 点。您从未将 length 的前一个值添加到下一个值。

  • 第 2 点。您从未初始化 length

  • 第 3 点。对于 i 的所有值,您使用的是 argv[1],而不是 argv[i]

  • 第 4 点,输入 ./a.out guy oneguy,如何得到 10

使用类似

的东西
length = 0;     // initialize

length += my_strlen(argv[i]);    // add up the length, use i as index.

P.S - 我不认为二进制文件的名称应该算作命令行参数,所以从索引 1 开始对我来说似乎是正确的,但最后,这取决于你。 [这里没有对错,自己的喜好,以_print语句为准] :-)