Как записать в структуре строку с пробелами? - C (СИ)
Формулировка задачи:
В структуре нужно записать строку с пробелами, но gets пропускает, а printf работает до пробела.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <windows.h>
struct films
{
char name[60];
char actor[60];
int time;
int price;
};
void read(struct films *Films, int i);
void read(struct films *Films, int i)
{
for (int j = 0; j < i; j++)
{
printf("Введiть назву фільма\n");
gets(&Films[j].name);
printf("Имя главного героя\n");
scanf("%s",&Films[j].actor);
printf("Длина фильма\n");
scanf("%d", &Films[j].time);
printf("Стоимость диска\n");
scanf("%d", &Films[j].price);
}
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
struct films Films[2];
read(Films, 2);
printf("\n");
_getch();
return 1;
}Решение задачи: «Как записать в структуре строку с пробелами?»
textual
Листинг программы
printf("Введiть назву фільма\n");
gets(Films[j].name); // амперсенд не нужен
printf("Имя главного героя\n");
scanf("%s",Films[j].actor); // тут тоже
Объяснение кода листинга программы
- Вводится название фильма с помощью функции
printfиgets. - Значение переменной
Films[j].nameсохраняется введенное пользователем название фильма. - Выводится запрос на ввод имени главного героя с помощью
printf. - Используя функцию
scanf, значение переменнойFilms[j].actorзаполняется введенным пользователем именем главного героя.