int main(int argc, char* argv[]) {
char file1 = argv[1];
char file2 = argv[2];
}
Я получаю сообщение об ошибке - инициализация делает целое число из указателя без приведения. file1 и file2 - это имена файлов. Как я могу к этому подойти?
argv[1]
а такжеargv[2]
иметь типchar *
которые указывают на строки, а объектыfile1
а такжеfile2
имеют тип char и не являются указателями. Итак, компилятор выдает ошибку, что вы пытаетесь назначить указатели (argv[1]
а такжеargv[2]
) к символам (file1
а такжеfile2
) что не имеет смысла ..
char file1 = argv[1];
char file2 = argv[2];
Вам нужно написать
char *file1 = argv[1];
char *file2 = argv[2];
В этом случае указателиfile1
а такжеfile2
будет указывать на введенные пользователем строки, обозначающие имена файлов.
char
->char *
kaylumargv
- это массив указателей наchar
. Каждый элемент имеет типchar *
. Some programmer dudeargv
если выargc
, чтобы убедиться, что индексы действительны. Some programmer dudechar
не работает. (Да, это один из моих ответов. Я с радостью подтвердю и "прокомментирую" любой ДРУГОЙ предложенный товар или лучшую копию.) Yunnoschargv
-array тоже завершается нулем (гарантируется стандартом), поэтому вместо проверкиargc
вы также можете передать его, например,for(char**p = argv; *p; ++p) { /* use *p */ }
. Однако это редко используется. Aconcagua