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

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

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

помогите, пжлста, ошибка при выводе(прога читает и выводит записи+создает новые) возможно из-за klient[N] спасибо
#include<stdio.h>
#include<stdlib.h>
#define N 15
struct salon
{char usluga[7],imja[6],familija[7],data[10];
      float summa;
      }klient[N];
 
     int main()
     {     
      FILE*in; 
      unsigned int dlina;
      int i,kolvo;
      in=fopen("klient.txt","r");
      if (in==NULL)
      {printf ("nevozmowno otkritj fail.txt\n");
      system("pause");
      exit(1);
      };
  
      for (i=0;i<N;i++){
     
      fscanf(in,"%s%s%s%s%f",klient[i].usluga,klient[i].imja,klient[i].familija,klient[i].data,&klient[i].summa);
     } 
      printf ("dannie o klientah:\n");
      for(i=0;i<N;++i)
      {printf("%10s %9s %15s %15s %6.2f \n",klient[i].usluga,klient[i].imja,klient[i].familija,klient[i].data,klient[i].summa);
      }
      //-----------------------------------------vivod dannih---------------------------------------------//
       printf("vvedite dannie\n");
       int k;
       printf("skoljko zapisej sdelatj?");
       scanf("%i",&k);
      for(i=N;i<N+k;++i); 
       {
                printf("usluga: ");
                gets(klient[i].usluga);
                printf("imja: ");
                gets(klient[i].imja);
                printf("familija: ");
                gets(klient[i].familija);
                printf("data: ");
                gets(klient[i].data);
                printf("summa: ");
                scanf("%f",&klient[i].summa);
                }
           for(i=0;i<N+k;++i)
      {printf("%10s %9s %15s %15s %6.2f \n",klient[i].usluga,klient[i].imja,klient[i].familija,klient[i].data,&klient[i].summa);
      }           
      fclose(in);
      system("pause");
      return 0;
      }

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

textual
Листинг программы
#include<stdio.h>
 
#define N 15
 
struct salon {
    char usluga[100],
         imja[100],
         familija[100],
         data[11];
    float summa;
} klient[N];
 
int main(void)
{     
    FILE *in; 
    int n, i, k;
    
    in = fopen("klient.txt", "r");
    if (in == NULL) {
        fprintf(stderr, "error: nevozmowno otkritj fail.txt\n");
        getchar();
        return 1;
    }
  
    n = 0;
    while(
        fscanf(in, "%s%s%s%s%f",
               klient[n].usluga,
               klient[n].imja,
               klient[n].familija,
               klient[n].data,
               &klient[n].summa) == 5 && n < N)
        n++;
 
    printf("dannie o klientah:\n");
    for (i = 0; i < n; i++)
        printf("%10s %9s %15s %15s %6.2f\n",
               klient[i].usluga,
               klient[i].imja,
               klient[i].familija,
               klient[i].data,
               klient[i].summa);
 
    /*----------vivod dannih----------*/
    printf("vvedite dannie\n");
    printf("skoljko zapisej sdelatj? ");
    
    if (scanf("%d%*c", &k) != 1) {
        fprintf(stderr, "error: incorrect input");
        return 1;
    }
        
    if (n + k > N) {
        fprintf(stderr, "error: number is too big, maximum is %d\n", N - n);
        return 1;
    }
    
    for (i = n; i < n + k; i++) {
        printf("usluga: ");
        fflush(stdout);
        scanf("%99[^\n]%*c", klient[i].usluga);
        printf("imja: ");
        fflush(stdout);
        scanf("%99[^\n]%*c", klient[i].imja);
        printf("familija: ");
        fflush(stdout);
        scanf("%99[^\n]%*c", klient[i].familija);
        printf("data: ");
        fflush(stdout);
        scanf("%10[^\n]%*c", klient[i].data);
        printf("summa: ");
        fflush(stdout);
        scanf("%f%*c", &klient[i].summa);
    }
    
    for (i = 0; i < n + k; i++)
        printf("%10s %9s %15s %15s %6.2f\n",
               klient[i].usluga,
               klient[i].imja,
               klient[i].familija,
               klient[i].data,
               klient[i].summa);
 
    fclose(in);
    getchar();
    return 0;
}

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

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

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


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

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

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