Форум программистов, компьютерный форум, киберфорум
Наши страницы

Возможен ли поиск в txt-файле? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ cout сброс флагов http://www.cyberforum.ru/cpp-beginners/thread151465.html
Подскажите. Как сбросить флаги cout ? А именно, нужно чтоб cout<<fixed; прекратил свое действие
C++ Последовательность единиц и нулей помогите написать функцию которая посчитает и выведет число всех последовательностей например дана послед 1100010110100 здесь две по 11 , одна по 000, две по 1, одна по 00 и две по 0 код на... http://www.cyberforum.ru/cpp-beginners/thread151444.html
Односвязные лнейные списки C++
Доброго времени суток. Нужно решить задачу, а я в списках не шарю совсем(и скока не пытался разобраться-не получиилось) Вот задача Даны текстовый файл и строка s. Группы символов, разделенные...
класс Time C++
у класса Time скрытые переменные - minutes и hours. функция-член должна принять ссылку на оъект Time и... короче, вот код: Time Time::sum(Time & s) { sum.hours=s.hours+hours; ...
C++ Копирование одной строки в другую циклом for http://www.cyberforum.ru/cpp-beginners/thread151360.html
Добрый день! есть программа, в которой пытаюсь скопировать одну строку в другую(без использования strcpy()) : int _tmain(int argc, _TCHAR* argv) { char b; // 1я строка char c; // 2я...
C++ Порязрядные операции в С В чем разница между операторами ! и ~? Как я понимаю, оба оператора преобразуют единичные биты в нулевые и наоборот, но почему printf("%d", !0) выводит 1, а printf("%d", ~0) выводит -1? подробнее

Показать сообщение отдельно
kravam
быдлокодер
1702 / 889 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
04.07.2010, 01:20
Да конечно можно, почему нельзя-то?
Для этого ты должен сделать примерно так:

Значит, у тебя есть текстовый файл с переводом слов, я правильно понял?
Вот такой примерно:
"рыба мясо дом молоко"

В начале программы считываешь этот файл в динамический массив. Вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!перегоняем файл в строку!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 long int razmer_faila;
 
//Теперь находим размер файла
 if (!(razmer_faila= razmer_faila ("perevod.txt"))) {
  printf ("не получилось найти размер файла perevod.txt\n");
  system ("pause");
  return 0;
 }
 
 
 //Теперь открываем файл на чтение
 FILE* f;
 if (!(f= fopen ("perevod.txt", "rb"))) {
  printf ("файл perevod.txt на чтение не тоткрыт\n");
  system ("pause");
  return 0; 
 }  
 
 //Теперь переписываем файл в строку нужного размера. ДЛя этого такую строку надо выделить
char* perevod_stroka = new char [razmer_faila];
 
 //И собсно запись файла в эту строку
 if (fread (perevod_stroka, 1, razmer_faila, f)<razmer_faila) {
  printf ("не удалось считать файл perevod_stroka в строку\n");
  system ("pause");
  return 0;
 }
 
 fclose (f);
 ...
 
 //В конце работы
 delete [] perevod_stroka;
Вот после этой хери у тебя будет в строке perevod_stroka файл-перевод

Ну, а теперь пиши какой-нибудь код, чтобы по нажатию 1 выводилось первое слово в этой строке, 2- второе, 3- третье и так далее. МОжно задействовать оператор switch. Можешь создать массив указателей на эти слова, заполнить его адресами этих слов и и обращаться к его элементам (адресам слов) при печатании слова.

О чём ты должен позаботиться:
1) razmer_faila () это функция которая возвращает размер файла. Как-нибудь сообрази
2) В файле у тебя между словами непечатаемые символы, а в строке-перводе должен быть символ 0. Сообрази как при перегоне файла в строку это сделать.
3) Зачем перегонять файл в строку, если можно работать с ним напрямки? Это хорошая и правильная привычка. Технически грамотная. Перегоняем файл в строку и делаем с ней что хотим.
4) Должен разобраться с режимами открытия файлов. Мне с бинарными проще работать, в общем, думай.

Вроде всё.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru