Ошибка при вводе данных в программу - C (СИ)

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

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

помогите, пжлста, ошибка при выводе(прога читает и выводит записи+создает новые) возможно из-за klient[N] спасибо
Листинг программы
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define N 15
  4. struct salon
  5. {char usluga[7],imja[6],familija[7],data[10];
  6. float summa;
  7. }klient[N];
  8. int main()
  9. {
  10. FILE*in;
  11. unsigned int dlina;
  12. int i,kolvo;
  13. in=fopen("klient.txt","r");
  14. if (in==NULL)
  15. {printf ("nevozmowno otkritj fail.txt\n");
  16. system("pause");
  17. exit(1);
  18. };
  19. for (i=0;i<N;i++){
  20. fscanf(in,"%s%s%s%s%f",klient[i].usluga,klient[i].imja,klient[i].familija,klient[i].data,&klient[i].summa);
  21. }
  22. printf ("dannie o klientah:\n");
  23. for(i=0;i<N;++i)
  24. {printf("%10s %9s %15s %15s %6.2f \n",klient[i].usluga,klient[i].imja,klient[i].familija,klient[i].data,klient[i].summa);
  25. }
  26. //-----------------------------------------vivod dannih---------------------------------------------//
  27. printf("vvedite dannie\n");
  28. int k;
  29. printf("skoljko zapisej sdelatj?");
  30. scanf("%i",&k);
  31. for(i=N;i<N+k;++i);
  32. {
  33. printf("usluga: ");
  34. gets(klient[i].usluga);
  35. printf("imja: ");
  36. gets(klient[i].imja);
  37. printf("familija: ");
  38. gets(klient[i].familija);
  39. printf("data: ");
  40. gets(klient[i].data);
  41. printf("summa: ");
  42. scanf("%f",&klient[i].summa);
  43. }
  44. for(i=0;i<N+k;++i)
  45. {printf("%10s %9s %15s %15s %6.2f \n",klient[i].usluga,klient[i].imja,klient[i].familija,klient[i].data,&klient[i].summa);
  46. }
  47. fclose(in);
  48. system("pause");
  49. return 0;
  50. }

Решение задачи: «Ошибка при вводе данных в программу»

textual
Листинг программы
  1. #include<stdio.h>
  2.  
  3. #define N 15
  4.  
  5. struct salon {
  6.     char usluga[100],
  7.          imja[100],
  8.          familija[100],
  9.          data[11];
  10.     float summa;
  11. } klient[N];
  12.  
  13. int main(void)
  14. {    
  15.     FILE *in;
  16.     int n, i, k;
  17.    
  18.     in = fopen("klient.txt", "r");
  19.     if (in == NULL) {
  20.         fprintf(stderr, "error: nevozmowno otkritj fail.txt\n");
  21.         getchar();
  22.         return 1;
  23.     }
  24.  
  25.     n = 0;
  26.     while(
  27.         fscanf(in, "%s%s%s%s%f",
  28.                klient[n].usluga,
  29.                klient[n].imja,
  30.                klient[n].familija,
  31.                klient[n].data,
  32.                &klient[n].summa) == 5 && n < N)
  33.         n++;
  34.  
  35.     printf("dannie o klientah:\n");
  36.     for (i = 0; i < n; i++)
  37.         printf("%10s %9s %15s %15s %6.2f\n",
  38.                klient[i].usluga,
  39.                klient[i].imja,
  40.                klient[i].familija,
  41.                klient[i].data,
  42.                klient[i].summa);
  43.  
  44.     /*----------vivod dannih----------*/
  45.     printf("vvedite dannie\n");
  46.     printf("skoljko zapisej sdelatj? ");
  47.    
  48.     if (scanf("%d%*c", &k) != 1) {
  49.         fprintf(stderr, "error: incorrect input");
  50.         return 1;
  51.     }
  52.        
  53.     if (n + k > N) {
  54.         fprintf(stderr, "error: number is too big, maximum is %d\n", N - n);
  55.         return 1;
  56.     }
  57.    
  58.     for (i = n; i < n + k; i++) {
  59.         printf("usluga: ");
  60.         fflush(stdout);
  61.         scanf("%99[^\n]%*c", klient[i].usluga);
  62.         printf("imja: ");
  63.         fflush(stdout);
  64.         scanf("%99[^\n]%*c", klient[i].imja);
  65.         printf("familija: ");
  66.         fflush(stdout);
  67.         scanf("%99[^\n]%*c", klient[i].familija);
  68.         printf("data: ");
  69.         fflush(stdout);
  70.         scanf("%10[^\n]%*c", klient[i].data);
  71.         printf("summa: ");
  72.         fflush(stdout);
  73.         scanf("%f%*c", &klient[i].summa);
  74.     }
  75.    
  76.     for (i = 0; i < n + k; i++)
  77.         printf("%10s %9s %15s %15s %6.2f\n",
  78.                klient[i].usluga,
  79.                klient[i].imja,
  80.                klient[i].familija,
  81.                klient[i].data,
  82.                klient[i].summa);
  83.  
  84.     fclose(in);
  85.     getchar();
  86.     return 0;
  87. }

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

  1. Программа считывает данные из файла klient.txt и выводит их на экран.
  2. Пользователю предлагается ввести количество записей, которые необходимо добавить в файл.
  3. Если введенное количество записей превышает максимально допустимое значение (15), программа выдаст ошибку.
  4. Введенные данные сохраняются в структуре salon и выводятся на экран.
  5. Программа закрывает файл klient.txt и ожидает нажатия любой клавиши.
  6. Возвращаемое значение 0 указывает на успешное завершение программы.

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


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

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

15   голосов , оценка 4.067 из 5

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

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

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