Как я могу разрешить сравнение между указателем и целым числом «k» и «my_argv» в следующем коде?

#c #pointers

#c #указатели

Вопрос:

  • мой argv содержит список из 10 значений.
  • Мне нужно выполнить некоторую операцию с функцией в цикле for.
 #include <stdio.h>


int main(int argc, const char* argv[])
{
    int my_argc;
    char **my_argv;
    if (argc > 2) 
    {
        if (!strcmp(argv[2], "all")) 
        {
            my_argc = 3;
            my_argv = (char *[]){ "0x1", "0x2", "0x3" };
        } else 
        {
           my_argc = argc - 2;
           my_argv = argv   2;
        }
        int i;
        for (i=0; i<my_argv; i  ) 
         {
            handle_arg(my_argv[i]);
         }
    }
    return 0;
}

 
  • Однако я получаю эту ошибку, как показано ниже? Например, я пытался перейти с int k на char k, а также использовать atoi? Итак, как я могу сравнить k с my_argv?
 warning: comparison between pointer and integer
    for (k=0; k<my_argv; k  )
 

Комментарии:

1. my_argc = 12; .. измените int my_argc = 12; хотя бы на.

2. @SouravGhosh , я отредактировал его. И опубликовал исходный код. Где-в я объявил все переменные, просто я не могу понять, почему выдается предупреждение при сравнении k с argv в цикле for?

3. из ошибки k<my_argv; это то, что вам нужно исправить, что вы на самом деле пытаетесь там, проверяя количество аргументов или другое?

4. Лучше показать полный код и объяснить, что вы пытаетесь с вводом и выводом.

5. Вы поставили else перед an if … как вы не получили ошибку для этого?

Ответ №1:

Переход по именованию переменных,

  • my_argv содержит фактические аргументы, переданные при вызове программы.
  • my_argc содержит количество аргументов, переданных при вызове программы.

Я очень сомневаюсь, что вам нужно сравнивать счетчик с my_argv , скорее вы должны сравнивать его с номером аргумента командной строки, который хранится в my_argc .


После редактирования:

Да, ваш код

  for (i=0; i<my_argv; i  ) 
 

должно быть

 for (i=0; i<my_argc; i  )