Программа закрывается после ввода данных - C (СИ)

Узнай цену своей работы

Формулировка задачи:

У меня такая проблема: При вводе данных первый раз нормально всё вводится, а начиная со второго не даёт мне ввести street и сразу просит ввести number? и после 5 раза прога закрывается, как сделать чтобы не закрывалась?) не пойму где ошибка)
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #pragma warning(disable: 4996)
  4. class home{
  5. public:
  6. home(void){
  7. strcpy (street, "street");
  8. strcpy (number, "number");
  9. strcpy (god, "god");
  10. strcpy (kvartira, "kvartira");
  11. }
  12. home(char *a, char *b, char *c, char *d);
  13. ~home(void);
  14. void Input(void);
  15. void Output(void);
  16. private:
  17. char number[100];
  18. char god[100];
  19. private:
  20. char kvartira[100];
  21. char street[100];
  22. };
  23.  
  24. home::home(char *a, char *b, char *c, char *d)
  25. {
  26. strcpy (street, a);
  27. strcpy (number, b);
  28. strcpy (god, c);
  29. strcpy (kvartira, d);
  30. }
  31. home::~home()
  32. {
  33. }
  34. void home::Input()
  35. {
  36. char szBuf[100];
  37. printf(" street (string): ");
  38. gets(szBuf);
  39. sscanf(szBuf, "%s", &street);
  40. printf(" number (string): ");
  41. gets(number);
  42. printf(" god (int):");
  43. scanf("%d",god);
  44. printf(" kvartira (int):");
  45. scanf("%d",kvartira);
  46. }
  47. void home::Output()
  48. {
  49. printf("street: %s. number: %s. god: %s. kvartira: %s.\n", street, number, god, kvartira);
  50. }
  51.  
  52. int main()
  53. {
  54. home *v1=new home();
  55. home *v2= new home("aaa", "bbb", "ccc","ddd");
  56. home *v3[5];
  57.  
  58. v1->Output();
  59. v2->Output();
  60. int i;
  61. for (i = 0; i < 5; i++) {
  62. v3[i]=new home();
  63. v3[i]->Input();
  64. }
  65. for (i = 0; i < 5; i++) {
  66. v3[i]->Output();
  67. }
  68. return 0;
  69. }

Решение задачи: «Программа закрывается после ввода данных»

textual
Листинг программы
  1. void home::Input()
  2. {
  3.     char szBuf[100];
  4.     printf("    street (string): ");
  5.     gets(szBuf);
  6.     sscanf(szBuf, "%s", &street);
  7.     printf("   number  (string): ");
  8.     gets(number);
  9.     printf("  god (int):");
  10.     scanf("%d",god);
  11.     printf("  kvartira (int):");
  12.     scanf("%d",kvartira);
  13.     while(getchar()!='\n');
  14. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы