Программа закрывается после ввода данных - 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');
}

Объяснение кода листинга программы

  1. Переменная street объявлена как строка (char szBuf[100]) и используется функция gets для ввода данных в неё.
  2. Переменная number объявлена как строка (char szBuf[100]) и используется функция gets для ввода данных в неё.
  3. Переменная god объявлена как целочисленный тип (int) и используется функция scanf для ввода данных в неё.
  4. Переменная kvartira объявлена как целочисленный тип (int) и используется функция scanf для ввода данных в неё.
  5. В конце программы используется функция while для очистки буфера ввода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы