Передача строк argv функциям в C

Я знаю, что есть сообщения об этом, и я пытался просмотреть их, но, похоже, они не решили мою проблему. Я предполагаю, что это что-то простое, что я упустил из виду, но, клянусь, я этого не вижу.

Итак, начнем ...

из основных

char *newstr = argv[3];
header(newstr);

заголовок функции

void header(char *read_file){

Я получаю конфликтующие типы для «заголовка» и предупреждение: передача аргумента 1 «заголовка» из несовместимого типа указателя.

Я просмотрел справочные ссылки из этой темы, и кажется как будто я иду по правильному пути к передаче аргументов. Я только предполагаю, что это как-то связано с argv.

Вот и мои аргументы, я отлично их использовал, пока это не сбило меня с толку.

-q Imhere.txt b.txt dynArray.c b.txt

person hobbes131    schedule 27.01.2013    source источник
comment
Кажется, все в порядке. argv[3] определенно относится к типу char *, как и аргумент вашей функции.   -  person    schedule 28.01.2013
comment
Вероятно, это потому, что вы не объявили вперед свою функцию.   -  person Oliver Charlesworth    schedule 28.01.2013
comment
ГХАААААА !!! @OliCharlesworth, вот и все. Это отстой, какая пустая трата часа. Спасибо!   -  person hobbes131    schedule 28.01.2013


Ответы (2)


Это хорошо для меня компилируется (с использованием gcc версии 4.2.1 (на основе Apple Inc., сборка 5658) (LLVM, сборка 2336.1.00)):

#include <stdio.h>

void header (char *read_file) {
    printf("%s\n", read_file);
}

int main(int argc, char* argv[]) {
    char *newstr = argv[3];
    header(newstr);
    return 0;
}

с выходом:

$ ./a.out -q Imhere.txt b.txt dynArray.c b.txt
b.txt
person Peter K.    schedule 27.01.2013
comment
@Downvoter: Почему? Особенно через три года? Ух ты. Мне кажется, время ложиться не на ту сторону. : 0) - person Peter K.; 05.01.2016

после параметров компиляции сделайте следующее [gcc ........ 2> ERROR.TXT]

затем опубликуйте эти ошибки здесь, чтобы мы могли увидеть, что не так.

person Dmitry    schedule 28.01.2013