В функции есть две ошибки.
Первая состоит в том, что массивы в выражениях неявно преобразуются в указатели на типы элементов массивов.
Так что, если функция возвращаетвыражение
return mot_generer;
, где mot_generer
- массив, тогда тип возвращаемого значения функции должен быть char *
.
Вторая ошибка состоит в том, что функция (правильно объявленная) возвращает указатель на локальныймассив с автоматической продолжительностью хранения, который не будет определен после выхода из функции.
Так что либо объявите массив в функции как имеющий статическую продолжительность хранения, например
char * initialisation_mot_a_trouver(){
static char mot_generer[]="controle";
return mot_generer;
}
, либо выделите массивдинамически, как
char * initialisation_mot_a_trouver()
{
const char *literal = "controle";
char *s = malloc( strlen( literal ) + 1 );
if ( s != NULL ) strcpy( s, literal );
return s;
}
Третий подход - передать функции уже созданный массив в main.
В этом случае функция может выглядеть как
char * initialisation_mot_a_trouver( char s[], size_t n )
{
strncpy( s, "controle", n );
s[n -1] = '\0';
// or for example
// fgets( s, n, stdin );
// s[ strcspn( s, "\n" ) ] = '\0';
return s;
}