#include <stdio.h>
#include <string.h>
#include <conio.h>
#include "altconio.h"
#include <string.h>
struct abiturient{
char school[50];
char year[50];
char high_sc[50];
int sr_ball;
int nom;} a[100];
int input (FILE *file, struct abiturient *a) {
clrscr();
int n, i;
printf ("Введите количество записей: ");
scanf ("%d", &n);
clrscr();
file = fopen("~$Temp.txt", "wt");
for (i=0; i<n; i++){
a[i].nom = i+1;
fprintf(file, "%d\n", a[i].nom);
printf("№ %d",a[i].nom);
printf (" Введите школу: ");
scanf ("%s", &a[i].school);
fprintf(file, "%s\n", &a[i].school);
printf ("Введите год окончания школы: ");
scanf ("%s", &a[i].year);
fprintf(file, "%s\n", &a[i].year);
printf ("Введите ВУЗ поступления: ");
scanf ("%s", &a[i].high_sc);
fprintf(file, "%s\n", &a[i].high_sc);
printf ("Введите средний бал аттестата: ");
scanf ("%d", &a[i].sr_ball);
fprintf(file, "%s\n", &a[i].sr_ball);
clrscr();}
fclose(file);
return (n);}
void read (FILE *file){
file = fopen("~$Temp.txt", "rt");
int i = 0;
while ( !feof(file) ){
fscanf(file, "%d", &a[i].nom);
fscanf(file, "%s", &a[i].school);
fscanf(file, "%s", &a[i].year);
fscanf(file, "%s", &a[i].high_sc);
fscanf(file, "%d", &a[i].sr_ball);
i++;}
fclose(file);}
void output(FILE *file, struct abiturient *a, int n){
clrscr();
printf("Cодержимое файла: ");
file = fopen("~$Temp.txt", "rt");
int i = 0;
read(file);
while (i < n){
printf("\n № %d", a[i].nom);
printf("\n Школа: %s", a[i].school);
printf("\n Год окончания школы: %s", a[i].year);
printf("\n ВУЗ поступления: %s", a[i].high_sc);
printf("\n Средний бал аттестата: %d", a[i].sr_ball);
printf("\n");
i++;}
printf("\n");
fclose(file);
system("pause");}
void search(struct abiturient *a, int n){
clrscr();
int b, c, d, buff, z = 0;
char buf[100];
printf("Принадлежность элемента файлу: ");
scanf("%s", &buf);
for(int i = 0; i < n; i++){
b = stricmp(a[i].school, buf);
c = stricmp(a[i].high_sc, buf);
d = stricmp(a[i].year, buf);
buff = atoi(buf);
if ((b == 0)||(c == 0)||(d == 0)||(a[i].sr_ball == buff)){
printf("\n № %d", a[i].nom);
printf("\n Школа: %s", a[i].school);
printf("\n Год окончания школы: %s", a[i].year);
printf("\n ВУЗ поступления: %s", a[i].high_sc);
printf("\n Средний бал аттестата: %d", a[i].sr_ball);
break;}
else z++;}
if (z == n) printf("\n Введеное не принадлежит к файлу... ");
system("pause");}
int add(FILE *file, struct abiturient *a, int n){
clrscr();
int k;
int i = 0;
file = fopen("~$Temp.txt", "at");
printf("\n Добавление элемента в конец файла.");
printf("\n Введите сколько элементов хотите добавить: ");
scanf("%d", &k);
for (; i<k; i++){
a[i].nom = n + i+1;
fprintf(file, "\n%d\n", a[i].nom);
printf("\n № %d",a[i].nom);
printf ("Введите школу: ");
scanf ("%s", &a[i].school);
fprintf(file, "%s\n", &a[i].school);
printf ("Введите год окончания школы: ");
scanf ("%s", &a[i].year);
fprintf(file, "%s\n", &a[i].year);
printf ("Введите ВУЗ поступления: ");
scanf ("%s", &a[i].high_sc);
fprintf(file, "%s\n", &a[i].high_sc);
printf ("Введите средний бал аттестата: ");
scanf ("%d", &a[i].sr_ball);
fprintf(file, "%s\n", &a[i].sr_ball);}
fclose(file);
return i;}
int delet(FILE *file, struct abiturient *a, int n){
clrscr();
output(file, a, n);
int k = 0;
printf("Введите № записи какую хотите удалить: ");
scanf("%d", &k);
file = fopen("~$Temp.txt", "wt");
for (int i = 0; i < n; i++){
if (a[i].nom != k){
a[i].nom = i+1;
fprintf(file, "\n%d\n", a[i].nom);
fprintf(file, "%s\n", &a[i].school);
fprintf(file, "%s\n", &a[i].year);
fprintf(file, "%s\n", &a[i].high_sc);
fprintf(file, "%d\n", &a[i].sr_ball);}}
fclose(file);
n--;
return(n);}
void menu_out(int a) {
clrscr();
setcolor(WHITE,BLACK);
switch (a) {
case 1: setcolor(WHITE,PINK);
printf("Ввод записи \n");
setcolor(WHITE,BLACK);
printf("Вывод всех записей на экран\n");
printf("Принадлежность записи к файлу\n");
printf("Добавление записи в файл\n");
printf("Удаление записи из файла\n");
printf("Выход\n");
break;
case 2: printf("Ввод записи \n");
setcolor(WHITE,PINK);
printf("Вывод всех записей на экран\n");
setcolor(WHITE,BLACK)
printf("Принадлежность записи к файлу\n");
printf("Добавление записи в файл\n")
printf("Удаление записи из файла\n");
printf("Выход\n");
break;
case 3: printf("Ввод записи \n");
printf("Вывод всех записей на экран\n");
setcolor(WHITE,PINK);
printf("Принадлежность записи к файлу\n");
setcolor(WHITE,BLACK);
printf("Добавление записи в файл\n");
printf("Удаление записи из файла\n");
printf("Выход\n");
break;
case 4: printf("Ввод записи \n");
printf("Вывод всех записей на экран\n");
printf("Принадлежность записи к файлу\n");
setcolor(WHITE,PINK);
printf("Добавление записи в файл\n");
setcolor(WHITE,BLACK);
printf("Удаление записи из файла\n");
printf("Выход\n");
break;
case 5: printf("Ввод записи \n");
printf("Вывод всех записей на экран\n");
printf("Принадлежность записи к файлу\n");
printf("Добавление записи в файл\n");
setcolor(WHITE,PINK);
printf("Удаление записи из файла\n");
setcolor(WHITE,BLACK);
printf("Выход\n");
break;
case 6: printf("Ввод записи \n");
printf("Вывод всех записей на экран\n");
printf("Принадлежность записи к файлу\n");
printf("Добавление записи в файл\n");
printf("Удаление записи из файла\n");
setcolor(WHITE,PINK);
printf("Выход\n");
setcolor(WHITE,BLACK);
break;}}
int main(){
int aA, vibor = 1, N = 6;
clrscr();
printf("\n");
setcolor(WHITE,BLACK);
clrscr();
printf("\n");
setcolor(WHITE,BLACK);
int n;
FILE *file = fopen("~$Temp.txt", "wt");
if (file == NULL){
perror("\n Такого файла нет: ");
getch( );
return(1);}
while (aA != 27){
menu_out(vibor);
aA = getch();
if (aA == 224) aA = getch();
switch (aA){
case 13:
switch (vibor){
case 1: clrscr(); n = input(file, a); clrscr(); break;
case 2: clrscr(); output(file, a, n); clrscr(); break;
case 3: clrscr(); search(a, n); clrscr(); break;
case 4: clrscr(); n += add(file, a, n); clrscr(); break;
case 5: clrscr(); n = delet(file, a, n); clrscr(); break;
case 6: aA = 27; break;}
break;
case 80:
if ( vibor < N ) vibor++;
else vibor = 1;
break;
case 72:
if (vibor > 1) vibor--;
else vibor = N;
break;}}
printf("\n");
system("pause");
return 0;}
Первая запись выводится корректно. Но последующие....почему так? Может кто объяснить, помочь найти ошибку?