计算参数的长度

时间:2015-02-05 16:28:03

标签: c string for-loop

代码:

int my_strlen(char *string){
    int i;
    for(i = 0; string[i] != '\0'; 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(长度)。

任何帮助都会很棒。

感谢。

2 个答案:

答案 0 :(得分:0)

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 :(得分:0)

  • 第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开始iseems对我来说是正确的,但最后,它取决于你。 [这里没有对错,自己的偏好,基于_print声明]: - )