Программа закрывается после ввода данных - 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 для очистки буфера ввода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д