Программа закрывается после ввода данных - C (СИ)
Формулировка задачи:
У меня такая проблема:
При вводе данных первый раз нормально всё вводится, а начиная со второго не даёт мне ввести street и сразу просит ввести number? и после 5 раза прога закрывается, как сделать чтобы не закрывалась?) не пойму где ошибка)
#include <stdio.h> #include <string.h> #pragma warning(disable: 4996) class home{ public: home(void){ strcpy (street, "street"); strcpy (number, "number"); strcpy (god, "god"); strcpy (kvartira, "kvartira"); } home(char *a, char *b, char *c, char *d); ~home(void); void Input(void); void Output(void); private: char number[100]; char god[100]; private: char kvartira[100]; char street[100]; }; home::home(char *a, char *b, char *c, char *d) { strcpy (street, a); strcpy (number, b); strcpy (god, c); strcpy (kvartira, d); } home::~home() { } void home::Input() { char szBuf[100]; printf(" street (string): "); gets(szBuf); sscanf(szBuf, "%s", &street); printf(" number (string): "); gets(number); printf(" god (int):"); scanf("%d",god); printf(" kvartira (int):"); scanf("%d",kvartira); } void home::Output() { printf("street: %s. number: %s. god: %s. kvartira: %s.\n", street, number, god, kvartira); } int main() { home *v1=new home(); home *v2= new home("aaa", "bbb", "ccc","ddd"); home *v3[5]; v1->Output(); v2->Output(); int i; for (i = 0; i < 5; i++) { v3[i]=new home(); v3[i]->Input(); } for (i = 0; i < 5; i++) { v3[i]->Output(); } return 0; }
Решение задачи: «Программа закрывается после ввода данных»
textual
Листинг программы
void home::Input() { char szBuf[100]; printf(" street (string): "); gets(szBuf); sscanf(szBuf, "%s", &street); printf(" number (string): "); gets(number); printf(" god (int):"); scanf("%d",god); printf(" kvartira (int):"); scanf("%d",kvartira); while(getchar()!='\n'); }
Объяснение кода листинга программы
- Переменная
street
объявлена как строка (char szBuf[100]) и используется функция gets для ввода данных в неё. - Переменная
number
объявлена как строка (char szBuf[100]) и используется функция gets для ввода данных в неё. - Переменная
god
объявлена как целочисленный тип (int) и используется функция scanf для ввода данных в неё. - Переменная
kvartira
объявлена как целочисленный тип (int) и используется функция scanf для ввода данных в неё. - В конце программы используется функция while для очистки буфера ввода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д