Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / string / 8 сообщений из 8, страница 1 из 1
19.05.2007, 12:38
    #34537368
errorka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
string
Кто может помочь написать Поиск в строке? Чтобы текст считывался с файла. А то,что-то я не совсем понимаю как это сделать((( Помогите,если не сложно...
...
Рейтинг: 0 / 0
19.05.2007, 12:50
    #34537378
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
string
переработав слегка мой проект это можно реализовать

--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
19.05.2007, 14:16
    #34537480
enkarito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
string
Например, приблизительно так:
Код: plaintext
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.
#include <stdio.h>
#include <string.h>

void main(int argc, char* argv[])
{
	FILE* input;
	char buffer[ 300 ];
	char str[]="34"; // Что ищем
	int count= 0 ;
	char* found;
	char* oldfound;
	if((input=fopen("c:\\test.txt","r")) == NULL)  // В каком файле
		printf("Open c:\test.txt was failed\n");
	else
	{
		printf("Start searching %s at file\n",str);
		while(!feof(input))  // Пока не достигнем конца файла
		{
			fgets(buffer, 300 ,input); // Читаем по одной строке, не превышающей 300 символов
			count++;
			printf("Line %.3d: %.300s",count,buffer);
			oldfound = buffer;
			while((found=strstr(oldfound,str)) != NULL) // Выполняем поиск по одной строке
			{
				printf("found at %.3d position\n",int(found-oldfound+ 1 ));
				oldfound = found+ 1 ;
			}			
		}
		fclose(input);
	}
}

--
У каждого свои проблемы... У кого суп жидкий, у кого бриллианты мелкие.
...
Рейтинг: 0 / 0
19.05.2007, 16:23
    #34537565
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
string
Ну слушай его милая, у него там баг, нет 2.
Все это можно сделать с помощью буфера размером = размер искомого слова и функции fgetc
...
Рейтинг: 0 / 0
19.05.2007, 16:57
    #34537583
enkarito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
string
2 blinded : Ну так помогите милой. Хотя бы парочкой строк.
Укажите на мои недочёты пожалуйста, раз Вы их видите.
Меня можно поправить, я не обижусь.
...
Рейтинг: 0 / 0
19.05.2007, 17:29
    #34537600
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
string
1) Буфер надо делать на 1 длинне чем читаешь
2) ежели искомое слово попадет на границу буфера ты его не найдешь
...
Рейтинг: 0 / 0
19.05.2007, 17:59
    #34537616
enkarito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
string
Спасибо.
1) согласен, виноват.
2) если вы подразумеваете, искомая строка будет начинаться в одном буфере, а заканчиваться в другом, то да - программа не найдет.
+тогда прошу добавить сюда же глюк, если строка содержит более 300 символов, то есть читается в несколько заходов, то будет неверно определять номера строк. А соответственно и номер позиции.

Это был лишь пример, для текстового файла размер строки которого не превышает 300 символов.
...
Рейтинг: 0 / 0
19.05.2007, 21:01
    #34537710
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
string
Все очень просто
заводится буфер символов, длинной равной длинне исклмого слова, который используется как циклический, т. е. как только доходим до конца буфера начинаем заполнять его сначала. Позиция с которнадо начинать сравнивать символы в буфере определяется как n=(<#прочитанного символа в строке>-<длина буфера>)% <длинна буфера>. Сравниваем символы от n до конца буфера, потом от начала до позиции n-1 включительно. Потом считываем еще один символ из строки помещаем его позицию n и снова проверяемю Пока n < 0 проверять не надо, только читаем, как только встретили '\n' инкрементирует счетчик строк, а #прочитаного символа -> 0.
как только встретили eof все.
PS тепереь буду писать для errorki словами, а то не поймет
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / string / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]