Ребята моя программа создаёт базу данных простенькую, и всё введенное в консоль сохраняет в txt файл. Мне нужно её доработать так чтобы я мог осуществить поиск по этой базе и отредактировать найденные данные (то есть прописать новые)
Код:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include "windows.h"
void Convert866to1251(char *dest)
{
const char t[] =
"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп"
" "
"рстуфхцчшщъыьэюяЁё "; // t - строка длиной 128 символов
for(int i = 0; dest[i]!=0; i++ )
{
int j = (unsigned char)dest[i] - 128; // получаем код символа - 128 (это будет позиция в строке t)
if( j>=0 ) // если код символа был больше 127 (т.е. может понадобится его перекодировать)
if( t[j]!=' ' ) // если в строке t не пробел (т.е. это буква, которую нужно заменить на нужную)
dest[i] = t[j]; // то заменяем
}
}
void error()
{
printf("\nВведённый номер не соответствует ни одному пункту меню!\nНажмите любую клавишу для повтора ввода номера!\nНадеемся со второго раза у вас всё получится!\n");
_getch();
}
struct georeki
{
char namereka [15];
char mestopolog [20];
int dlina,glubina;
} ;
int main ()
{ int i,n=0;
setlocale(LC_ALL,".1251");
printf("________________________________________________________________________________\n");
printf(" Программа, которая создаёт базу данных «География.Реки».\n Программа обладает функциями заполнения и обработки файла\n в которой хранится база данных «География.Реки».\n");
printf("________________________________________________________________________________");
printf(" Программу выполнил:\n Студент группы ИТ-119 Ковалёв Денис, каф. АСОИУ, OмГТУ, 2009\n\n");
bool flag = 0;
FILE *f;
char file_name[200];
file_name[0]=0;
while (flag==0){
if (file_name[0]==0){
printf("Введите имя файла: ");
fflush(stdin);
scanf("%199[^\n]s",file_name);
} if (file_name[0]!=0) flag=1;
}
while (true){system("cls");
printf("________________________________________________________________________________\n");
printf(" Программа, которая создаёт базу данных «География.Реки».\n Программа обладает функциями заполнения и обработки файла\n в которой хранится база данных «География.Реки».\n");
printf("________________________________________________________________________________");
printf(" Программу выполнил:\n Студент группы ИТ-119 Ковалёв Денис, каф. АСОИУ, OмГТУ, 2009\n\n");
printf("\nФайл %s успешно создан!\nЖелаем удачи с дальнейшей обработкой данного файла!\n\n",file_name);
printf("1.Заполения файла %s данными\n",file_name);
printf("2.Редактирование файла %s\n",file_name);
printf("3.Выход из программы\n");
fflush(stdin);
printf("\nВведите номер пункта меню для продолжения: ");
char k;
scanf("%c",&k);
switch(k){
case '1':
{
setlocale(LC_ALL,".1251");
f = fopen( file_name, "w+" );
struct georeki z [20];
system("cls");
if (f == NULL)
{
printf("Couldn't write to file: '%s'...\n",file_name);
return -1;
}
printf("Введите количество рек: ");
scanf ("%d", &n);
fprintf(f,"Название реки\tМестположение реки\tГлубина реки\tДлина реки\n");
if (f!=NULL){
for (i=0; i<n; i++)
{
printf("Введите название %u реки: ",i+1);
scanf ("%s", &z[i].namereka);
setlocale( LC_ALL, ".1251" );
Convert866to1251(z[i].namereka);
fprintf (f,"%13.13s\t",z[i].namereka);
printf ("Введите местоположение реки: ");
scanf ("%s", &z[i].mestopolog);
setlocale( LC_ALL, ".1251" );
Convert866to1251(z[i].mestopolog);
fprintf(f,"%18.18s\t",z[i].mestopolog);
printf ("Введите глубину реки в метрах: ");
scanf ("%d", &z[i].glubina);
fprintf(f,"%12.d\t",z[i].glubina);
printf ("Введите длину реки в метрах: ");
scanf ("%d",&z[i].dlina);
fprintf(f,"%10.d\n" [i].dlina); }
}
fclose(f);
printf("\n");
printf("Данные вводимые вами с клавиатуры были успешно сохранены в файл %s\n\nДля перезаписи данных в файле %s нужно выбрать первый пункт меню.",file_name,file_name);
printf("\n\nДля возврата к меню нажмите любую клавишу\n");
_getch();
break;
}
case '2': ;
case '3': return -1;
default: error();system("cls");break;
}
}
}