代码:
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(长度)。
任何帮助都会很棒。
感谢。
答案 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声明]: - )