wedtorque Ответов: 1

Как взять несколько строк ?


я работаю над базовым проектом базы данных
рассмотрим структуру

struct student
{ 
  int  rollno;
  char full_name[20];
  char address[50];
  char birthmark[50];
};


как принять этот ввод
ролльно 6
имя Джон Сноу
адрес Винтерфелл Северный
родимое пятно мечи ранили повсюду

Что я уже пробовал:

я пробовал функции scanf("%ы",имя_строки),то scanf("%[^\N], где с",имя_строки),получает(имя_строки),
помощью fgets(буфер,размер стандартный ввод) с функцию fflush стандартного ввода.
всегда есть какие-то ошибки.
до сих пор fgets работают отлично, но я читал, что ffush(stdin) - это неправильная практика .

Итак, каков же должен быть подход к тому, чтобы принимать ввод строки (с пробелами) одновременно один за другим

CPallini

Почему бы вам не воспользоваться getline?

wedtorque

getline не существует в стандарте ANSI C, я думаю.? никогда не использовал его. я займусь этим

1 Ответов

Рейтинг:
1

Richard MacCutchan

Это зависит от того, как вы собираетесь его читать. Очевидным выбором будет серия подсказок, за которыми последуют чтения с использованием gets/fgets. Считайте каждую строку в общий рабочий буфер, чтобы затем проверить правильность ввода и выполнить любые преобразования, которые могут потребоваться, прежде чем хранить значения в вашей структуре.

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