Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Scanf и пробелы (Вопрос по СИ)

Incub Happy Ученик (116), закрыт 5 лет назад
Как сделать ввод с помощью scanf с пробелами? Есть структура с несколькими типами у каждого по 1 полю. Необходимо, чтобы при вводе в первый тип первого поля сообщения вроде РЕМИНГТОН 950, сообщение записывались именно в первый тип первого поля, а не распределялось знаком пробела на следующий тип.
Лучший ответ
Николай Веселуха Высший разум (383246) 5 лет назад
Изучайте особенности, код под Windows в Visual Studio протестирован.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define BUFFER 16
int main() {
char str[BUFFER];
printf("str?.. ");
while (!scanf_s("%[^\n]s", str, _countof(str))) {
while (getchar() != '\n');
printf("str?.. ");
}
puts(str);
fputs(str, stdout);
_getch();
return 0;
}
Остальные ответы
user49912 Оракул (51272) 5 лет назад
Юзай fgets.
Incub HappyУченик (116) 5 лет назад
Все говорят его использовать, но я так и не смог найти примеры его использования для считывания ввода с клавиатуры, только с файлов.
"но я так и не смог найти примеры его использования для считывания ввода с клавиатуры" C, Гриффитс Дэвид Изучаем программирование на C (2013) стр. 103
Григорий Каринов Мастер (2401) 5 лет назад
Функция scnaf считывает строку пока не найдет первый пробельный символ, и на этом моменте функция завершает свою работу. Для считывания всех символов воспользуйся функцией getchar().

Советую загрузить библиотеку cs50 https://cs50.readthedocs.io/library/c/ в ней есть всё необходимое для получения данных от пользователей. Документация к функциям из cs50.h https://man.cs50.io/
Похожие вопросы