Я пытаюсь прочитать переменную длину char * из пользовательского ввода. Я хочу иметь возможность указать длину строки для чтения при вызове функции;
char *get_char(char *message, unsigned int size) {
bool correct = false;
char *value = (char*)calloc(size+1, sizeof(char));
cout << message;
while(!correct) {
int control = scanf_s("%s", value);
if (control == 1)
correct = true;
else
cout << "Enter a correct value!" <<endl
<< message;
while(cin.get() != '\n');
}
return value;
}
Итак, после запуска программы и попытки ввода строки я получил нарушение доступа к памяти, поэтому я решил, что что-то пошло не так при доступе к выделенному пространству. Моя первая идея заключалась в том, что это пошло не так, потому что размер отсканированного символа * не указан в scanf (), но он также не работает со строками правильной длины. Даже если я предоставлю calloc размер 1000 и попытаюсь ввести один символ, программа вылетает.
Что я сделал не так?