Никогда не используйте функцию gets
. Это по своей сути небезопасно, поскольку нет способа защитить от перерасхода (пользователь вводит больше данных, чем вы готовы принять). Фактически, он был удален с языка по стандарту ISO C 2011 года.
Вместо этого вы должны использовать fgets()
. Это немного сложнее в использовании (во-первых, он оставляет в строке строку '\n'
), но она позволяет указать максимальное количество символов для чтения.
Функция getStr
, вероятно, не должна принимать аргумент char**
; a char*
, так как он не будет изменять указатель, просто считывая данные в массив, на который указывает указатель.
Вам нужно будет выделить массив char
для чтения данных. Вы можете либо объявить объект массива:
char line[200]; // for example
или использовать malloc
выделить пространство.
Еще одна вещь: void main()
неверен. (Составителям разрешено принимать его, но нет веских оснований для его использования.) Правильное определение: int main(void)
. Если у вас есть книга, в которой говорится, что вы используете void main()
, она была написана человеком, который не очень хорошо знает язык C, и, вероятно, он будет иметь более серьезные ошибки.
Посмотрите на comp.lang.c FAQ.
Добро пожаловать в SO! Вы читали о функциях get? Что непонятно? – Derek