C编程找到2维数组的长度

时间:2011-02-01 03:54:02

标签: c arrays multidimensional-array type-conversion

我的程序使用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;
}

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

我认为你对argv内容感到困惑。操作系统将传递一些ASCIIZ字符串,例如使用参数ala ...

调用my_program
my_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]