Я думаю, вы не уверены в содержании argv. ОС передаст несколько строк ASCIIZ, таких как my_program с аргументами ala ...
my_program first second third
... похоже на следующее объявление в вашей программе ...
int argc = 4;
const char* argv[4] = { "my_program", "first", "second", "third" };
Следовательно, когда вы индексируете в argv[1][i]
, вы получаете i-й символ в строке «first». Это справедливо только для значений i между 0 (что дает 'f') и 5 (что указывает на завершающий символ NUL '\ 0').
Итак, двумерного массива N * M нет, но есть массив указателей на (массив символов). Вы можете вызвать обычную функцию strlen()
, как в strlen(argv[1])
, чтобы узнать количество символов в каждом аргументе. Только argc
сообщает вам общее количество элементов в argv
.
Это помогает?