Ошибка при вводе данных в программу - 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;
- }
Объяснение кода листинга программы
- Программа считывает данные из файла
klient.txt
и выводит их на экран. - Пользователю предлагается ввести количество записей, которые необходимо добавить в файл.
- Если введенное количество записей превышает максимально допустимое значение (15), программа выдаст ошибку.
- Введенные данные сохраняются в структуре
salon
и выводятся на экран. - Программа закрывает файл
klient.txt
и ожидает нажатия любой клавиши. - Возвращаемое значение 0 указывает на успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д