Ошибка при вводе данных в программу - 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 указывает на успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д