Указатель командной строки char * argv [], используемый на языке C, позволяет такие операции, как;Как создать аналогичный указатель char, как char * argv
ptintf ("%c", argv [3][6]); // to print the 7th element of 4th argument
printf ("%s", argv [3]); // to print the 4th parsed argument
Теперь я понимаю, что ARGV массив символов создается до основной функции вызывается и символ * ARGV [] направляет только указатель в сторону этого массива, созданного компилятором.
Как мы можем создать указатель в коде C, который позволит подобные операции?
Я пытался делать,
#include <stdio.h>
int main() {
char array [20] [20];
char *ptr_array = array ;
array [0] [0]= 'a';
array [0][1]= 'b';
array [0] [2] = '\0';
array [1] [0]= 'a';
array [1][1]= 'b';
array [1] [2] = '\0';
array [2] [0]= 'a';
array [2][1]= 'b';
array [2] [2] = '\0';
// assuming there is content in the array
printf("%s\n", ptr_array [1]);
return 0; }
, но я в конечном итоге с предупреждением при компиляции и дампа памяти при выполнении.
'ptr_array' является указателем на символ. Я не вижу, что он делает в вашем коде. Вам нужен либо двумерный массив (который у вас есть, это «массив»), либо указатель на указатель (который на самом деле «argv»). Просто удалите 'ptr_array' из кода и вместо этого используйте' array'. 'printf ("% s \ n ", array [1]);' должен работать нормально. (Также кажется, что вы вводите в заблуждение строки и отдельные символы - пожалуйста, прочитайте базовое руководство по строкам и символам C, а также прочитайте справочную страницу для 'printf()'.) –
Буду поступать так же, как советовал. С уважением. и цените ваше время. – deepIglicious
Но один вопрос: зачем мы используем * argv внутри int main (int argc, char * argv)? Если у argc есть все свойства массива, я не понимаю, почему мы используем argv как массив указателей. – deepIglicious