Проблема в том, что вы заменяете указатель 'name', который ваша функция main
передает getInfo()
. Это связано с тем, что getInfo()
вызывает getLine()
, который сам создает массив символов new и возвращает указатель на этот буфер в getInfo()
.
Внутри getInfo()
, это напечатано правильно (как вы заметили); однако функция main
передает копию указателя name
(т. е. по значению ) - и эта функция не может (не может быть изменена) функцией getInfo
. Итак, в main
вы распечатываете неинициализированный массив символов (name
).
Существует несколько способов исправить это. Можно было бы передать аргумент (ы) name
(и, предположительно, place
) getInfo()
в качестве указателя на указатель , когда вам нужно будет отменить ссылку внутри этого функция; например:
void getInfo(char** name, char** place, char* days[])
{
printf("Type in your name:\n");
*name = getLine();
printf("%s", *name);
}
Затем в вашем main
вам: (a) не нужно выделять память для name
(и place
), как это делает * Функция 1035 *; (b) передать адрес указателя name
на getInfo()
. Вот так, например:
int main(int argc, const char* argv[])
{
char* name;// = (char*)malloc(100 * sizeof(char));
char* place;// = (char*)malloc(100 * sizeof(char));
char* days[5]; // Don't know what you want to do with this!
getInfo(&name, &place, days);
printf("%s\n", name);
// Don't forget to free the allocated buffers:
free(name);
// free(place);
return 0;
}
Не стесняйтесь просить дальнейших разъяснений и / или объяснений.