передача одного из свойств структуры по указателю
Объясните пожалуйста, где моя ошибка? имеется следующая структура:
struct mainStruct {char *name; float numFloat; int numInt;} product;
и имеется функция в которая получает на вход указатель на char **getPointer:
void Func1(char **getPointer, char *text) {
printf("\n%s", text);
scanf("%[^\n\r]", *getPointer);
}
и при попытке передать указатель следующим образом:
Func1(&product.name, "Enter name: ");
У меня пропускается ввод и по итогу свойство name имеет значение NULL
p.s.func1 находится в отдельном файле, при передаче оставшихся свойств во внешние функции все работает корректно ( оставшиейся функции принимают параметры по типу float *getVar и int *getInt соответственно)
Ответы (1 шт):
Надо примерно так
void Func1(char **getPointer, char *text)
{
*getPointer = malloc(200);
printf("\n%s", text);
scanf("%199[^\n\r]", *getPointer);
}
Т.е. выделить какую-то память через malloc - только потом не забыть ее освободить при помощи free.
На ваше
char *str; Func1(&str, "Enter value: ");то переменная str будет инициализированна строкой и потом ее можно спокойно вывести
Вы просто не поняли, что это грубая ошибка. char *str; - локальная переменная, и вам так не повезло, что она, похоже, содержала мусор, указывающий на какую-то разрешенную память, в которую и записалась строка. Типичное неопределенное поведение...
Сами проверьте - сравните значение str до и после вызова функции.