При заполнении структуры не отрабатывает строка gets - C (СИ)
Формулировка задачи:
В общем, есть такой код, есть структура, проблема заключается в следующем, при заполнении структуры не отрабатывает строка gets (data[i].name); Точнее отрабатывает, но только первый раз, после этого она игнорируется ... В чем проблема ? Ибо я уже минут 20 пытаюсь понять
#include <stdio.h> #include <stdlib.h> #include <conio.h> # define slots 3 struct base { char name[32]; char adress[32]; int step_rodstva; } data[slots]; int main () { int i=0,prov,prov_count=0; for (i=0;i<slots;i++) { system("cls"); printf ("Vvedite F.I.O.\n"); gets (data[i].name); printf ("Vvedite adres \n"); gets (data[i].adress); for(prov_count=0;prov_count!=1;) { printf ("\nVvedite stepen' rodstva (1-4)\n 1- Blizkie rodstvenniki \n 2- Lica, sostoiashie v rodstvennyh otnosheniah \n 3-dalnie rodstvenniki \n 4- Net rodstvennyh sviazei \n"); prov_count=0; scanf ("%d",&prov); if (prov > 0 && prov < 5) { prov_count=1; data[i].step_rodstva=prov; } else { printf ("\nSyntax error. Vvedite eshe raz stepen rodstva."); prov_count=0; } // Konec else } // Konec for } // Konec cikla for (i=0;i<slots;i++) //vyvod { printf ("\n================\n"); puts (data[i].name); puts (data[i].adress); printf ("\n%d",data[i].step_rodstva); } printf ("\nYspeshno"); getch (); return 0; }
Решение задачи: «При заполнении структуры не отрабатывает строка gets»
textual
Листинг программы
scanf ("%d",&prov); // после ввода числа очищай буфер от символа перевода строки: { char c; while((c = getchar()) != '\n' && c != EOF); }
Объяснение кода листинга программы
scanf (
%d,&prov);
- программа считывает целочисленное значение от пользователя и сохраняет его в переменнойprov
.{
- начало блока кодаchar c;
- объявление переменной типаchar
с именемc
.while((c = getchar()) != '\n' && c != EOF);
- цикл, который будет выполняться до тех пор, пока считываемый символ не является символом новой строки (\n
) или до тех пор, пока не достигнут конец файла (EOF). Внутри цикла считывается символc
с помощью функцииgetchar()
.}
- конец блока кода
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д