#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
перед anif
… как вы не получили ошибку для этого?
Ответ №1:
Переход по именованию переменных,
my_argv
содержит фактические аргументы, переданные при вызове программы.my_argc
содержит количество аргументов, переданных при вызове программы.
Я очень сомневаюсь, что вам нужно сравнивать счетчик с my_argv
, скорее вы должны сравнивать его с номером аргумента командной строки, который хранится в my_argc
.
После редактирования:
Да, ваш код
for (i=0; i<my_argv; i )
должно быть
for (i=0; i<my_argc; i )