2016-03-27 4 views
-1

Мне нужно прочитать ввод. Дело в том, что вход может быть 1 или a или 1 word1 или a word1 word2.Чтение строк в C

Как я могу прочитать весь ввод? Я пробовал scanf("%s", var);, который получает только первое, что вы пишете. И я не могу использовать scanf("%s %s %s", var, var2, var3);, так как не всегда есть 3 переменных.

Я также попытался gets(var); и я получаю warning: the 'gets' function is dangerous and should not be used.

Как я могу это сделать?

+1

Вы можете использовать getline – stark

+2

Вместо этого используйте 'fgets'. –

+0

спасибо, ребята – user6122011

ответ

0

gets() устарел, поскольку он не знает, насколько велик ваш буфер. В результате он может легко перезаписать буфер, который вы ему даете.

Вместо этого использовать fgets().

char buffer[100]; 
fgets(buffer, sizeof buffer, stdin); 

Или, если вы выделили память динамически, оператор sizeof не поможет, так что вам необходимо вручную указать размер:

const size_t bufferSize = 100; 
char *buffer = malloc(bufferSize); 
fgets(buffer, bufferSize, stdin); 

Только небольшое слово предупреждения, fgets() функция будет читать и хранить символ перевода строки в буфер.

+0

большое спасибо! – user6122011

Смежные вопросы