Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2009, 20:15   #1
mrhankey
Новичок
Джуниор
 
Регистрация: 13.10.2009
Сообщений: 1
По умолчанию Поиск в файле

Ребята моя программа создаёт базу данных простенькую, и всё введенное в консоль сохраняет в 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;
}
 }
}
mrhankey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск файле foxes Общие вопросы Delphi 4 01.06.2009 15:40
Поиск в файле Zandrey Microsoft Office Excel 8 05.09.2008 12:23
поиск в файле Elm0 Паскаль, Turbo Pascal, PascalABC.NET 14 07.06.2008 22:41
Поиск в файле lin Помощь студентам 3 25.05.2007 08:40
Поиск в файле asale Microsoft Office Excel 1 15.05.2007 23:33