При получении строк, содержащих пробелы с scanf()
, он присваивает только вход, указанный перед пробелом. Например, если я даю «привет мир» в качестве входных данных. В переменную сохраняется только «привет». Я знаю его спокойную естественность с scanf()
. Когда я использую gets()
, он отлично работает. Но gcc сообщает, что gets()
устарел. Он также предупреждает, что gets()
является опасным и не должен использоваться. Итак, без gets()
как получить строки с пространством? Существуют ли другие альтернативные функции?Как получить строки, содержащие пробел без gets() в C?
0
A
ответ
2
Вы можете использовать char *fgets(char *str, int n, FILE *stream)
Чтобы принять ввод от пользователя, вместо FILE* stream
, используйте стандартный входной поток stdin
fgets (str, 60, stdin)
+0
С этим я могу получить вход от stdin? –
+0
@PraveenKumar Да, вы можете – Haris
'обугленного ул [256]; fgets (str, sizeof (str), stdin); '- Обратите внимание, что' fgets' потребляет и сохраняет '\ n' в конце' str' (при условии, что для него есть место). –
Что является вторым аргументом? Максимальное количество символов или необходимое количество символов или что-то еще? –
'char str [256] = {0}; scanf ("% 255 [^ \ n]% * c", str); ' – BLUEPIXY