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