Как передать функцию void (void) другой функции в качестве параметра в c

[введите описание изображения][1]У меня есть функция void readline(), которая выводит строку, и я хочу передать ее в другую функцию в качестве параметра, как мне это сделать,

Спасибо за любую помощь.

int scorecount(argc1, argv1, void readline());
void readline();


int main(int argc, char *argv[]){
    scorecount(argc,argv);
}


int scorecount(argc1, argv1, void readline()){

    output a int
    and I want to use the string from readline function somewhere in
    scorecount

}


void readline(){

    output a string

}

person Hu Yunfei    schedule 15.09.2017    source источник
comment
Вам нужно показать больше кода, ваш вопрос неясен в его нынешнем виде. Или вам может понадобиться прочитать учебник C.   -  person Jabberwocky    schedule 15.09.2017
comment
вы говорите, что readline даст вам выходную строку, и вы хотите передать ее в другую функцию, тип возвращаемого значения этой функции readline должен быть строкой   -  person Sandeep Bhaskar    schedule 15.09.2017
comment
Возможно, вам нужна строка чтения GNU, но она не возвращает void   -  person Basile Starynkevitch    schedule 15.09.2017
comment
stackoverflow.com/a/9143434/841108   -  person Basile Starynkevitch    schedule 15.09.2017
comment
Почему вы связались с реальным кодом и ввели какое-то отдаленное приближение к этому коду? Прочтите, а затем предоставьте минимально воспроизводимый пример в тексте вашего вопроса.   -  person ad absurdum    schedule 15.09.2017


Ответы (1)


Вы можете объявить параметр как объявление функции, используя любое имя параметра. Например

void another_function( void readline( void ) ); 

И функция another_function может быть вызвана как

another_function( readline );

Компилятор корректирует объявление функции так, чтобы оно указывало на функцию. Таким образом, приведенное выше объявление эквивалентно

void another_function( void ( *readline )( void ) ); 

РЕДАКТИРОВАТЬ: после того, как вы обновили свой код, функция должна быть объявлена ​​​​как

int scorecount( int argc, char * argv[], void readline( void ) );
void readline( void );

и позвонил как

scorecount( argc, argv, readline );
person Vlad from Moscow    schedule 15.09.2017
comment
Я очень новичок в переполнении стека, как я могу разместить свой код здесь, чтобы вы, ребята, могли его увидеть? - person Hu Yunfei; 15.09.2017
comment
@HuYunfei Мой ответ неясен или у вас есть еще одна проблема? - person Vlad from Moscow; 15.09.2017
comment
Я хочу передать функцию readline в функцию, которая уже передала argc и argv в параметре, и я применил ваше решение, появляется ошибка - person Hu Yunfei; 15.09.2017
comment
@HuYunfei Обновите свой вопрос. - person Vlad from Moscow; 15.09.2017
comment
@HuYunfei Не давайте ссылку на изображение. Введите код в своем вопросе. - person Vlad from Moscow; 15.09.2017
comment
пожалуйста, посмотрите скриншот моего кода, спасибо - person Hu Yunfei; 15.09.2017
comment
@HuYunfei Введите код сообщения об ошибке в вопросе вместо ссылки. - person Vlad from Moscow; 15.09.2017
comment
@HuYunfei Перечитайте мой ответ. Я показал, как должна вызываться функция. - person Vlad from Moscow; 15.09.2017
comment
Я поместил здесь кусок кода, пожалуйста, посмотрите его - person Hu Yunfei; 15.09.2017