Как в переменую передать функцию

#include "stdio.h"
#include "stdlib.h"

void * input(char InData[1024]){
    char *str = malloc(sizeof( char ));
    printf(InData);
    fgets(str, 1024, stdin);
    return str;
}

int main(int argc, char const *argv[])
{   
    char a[] = input("Hello:");
    printf(a);
}

какой тип должен быть у переменой что-бы она принимала функцию ?

Решено

код

#include "stdio.h"
#include "stdlib.h"

void * input(char InData[1024]){
    char *str = malloc(sizeof( char ));
    printf(InData);
    fgets(str, 1024, stdin);
    return str;
}

int main(int argc, char const *argv[])
{   
    char * a = input("Your name?:");
    printf("Hello %s",a);
    return 0;
}

Ответы (1 шт):

Автор решения: Yaroslav

Для коректной компиляции переменая должна иметь тип char * , выделения памяти должно происходить по размеру данных. И не забудте высвободить память после ее использования.

#include "stdio.h"
#include "stdlib.h"

char * input(char * InData){
    size_t len = strlen(InData);
    char *str = malloc(len + 1);
    snprintf(str,len, "%s",InData);
    fgets(str, len, stdin);
    return str;
}

int main(int argc, char *argv[])
{   
    char * a = input("Hello:");
    printf(a);
    free(a);
 }
→ Ссылка