我的程序使用argc和argv []获取命令行参数。我的问题是如何找到argv [1] [i]的长度。
我的代码抓取了argv []
的长度int my_strlen(char input[]){
int len = 0;
while(input[len] != '\0'){
++len;
}
return len;
}
但是当我试图找到argv [1] [len]时,我得到一个下标值既不是数组也不是指针: 我的尝试
int my_strlen(char input[]){
int len = 0;
while((input[1][len] - '0') != '\0'){
++len;
}
return len;
}
完整代码:
#include <stdio.h>
#include <math.h>
int my_strlen(char input[]);
int main(int argc, char *argv[]){
int length = 0;
length = my_strlen(argv[1]);
long numberArr[length];
int i, j;
for(i = 0; i < length; i++){
numberArr[i] = argv[1][i] - '0';
}
return 0;
}
int my_strlen(char input[]){
int len = 0;
while((input[1][len] - '0') != '\0'){
++len;
}
return len;
}
提前感谢您的帮助!
答案 0 :(得分:3)
我认为你对argv内容感到困惑。操作系统将传递一些ASCIIZ字符串,例如使用参数ala ...
调用my_programmy_program first second third
...类似于在您的程序中声明以下声明......
int argc = 4;
const char* argv[4] = { "my_program", "first", "second", "third" };
因此,当您索引到argv[1][i]
时,您将获得字符串“first”中的第i个字符。这仅适用于介于0(表示'f')和5(表示终止NUL字符'\ 0')的i之间的值。
所以,没有二维N * M数组,但是有一个指针数组(char-array)。您可以调用strlen()
中的常规strlen(argv[1])
函数来查找每个参数中的字符数。只有argc
会告诉您argv
中的元素总数。
这有帮助吗?
答案 1 :(得分:1)
在main
中,您将argv[1]
传递给my_strlen
。这意味着my_strlen
只会收到一个普通的单维字符串。它不需要input[1][len]
,只需input[len]
。