Попробуйте использовать fgets (). Он будет читать полную строку из потока по вашему выбору (стандартный, я думаю, вы ищете). Пример для вашего случая:
char address[100];
fgets(address, 100, stdin);
fgets () будет считывать самое большее количество символов, переданных во втором аргументе (минус один). Нет переполнения буфера, и вы получите всю строку до символа новой строки (или до EOF). Обратите внимание, что, поскольку максимальное количество символов для чтения является одним из параметров, возможно, вы получите частичную строку. Проверьте, является ли последний символ в возвращаемой строке '\ n', и вы узнаете, что получили полную строку. Обнаружение EOF тоже довольно просто; NULL
возвращаемое значение и проверка на errno
должны помочь вам.
Спасибо Крису (ниже) за пункт о частичных строках.