计算参数的长度
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语句为准] :-)
代码:
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语句为准] :-)