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

--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
string
    #34537480
enkarito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, приблизительно так:
Код: 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
string
    #34537565
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну слушай его милая, у него там баг, нет 2.
Все это можно сделать с помощью буфера размером = размер искомого слова и функции fgetc
...
Рейтинг: 0 / 0
string
    #34537583
enkarito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 blinded : Ну так помогите милой. Хотя бы парочкой строк.
Укажите на мои недочёты пожалуйста, раз Вы их видите.
Меня можно поправить, я не обижусь.
...
Рейтинг: 0 / 0
string
    #34537600
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Буфер надо делать на 1 длинне чем читаешь
2) ежели искомое слово попадет на границу буфера ты его не найдешь
...
Рейтинг: 0 / 0
string
    #34537616
enkarito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
1) согласен, виноват.
2) если вы подразумеваете, искомая строка будет начинаться в одном буфере, а заканчиваться в другом, то да - программа не найдет.
+тогда прошу добавить сюда же глюк, если строка содержит более 300 символов, то есть читается в несколько заходов, то будет неверно определять номера строк. А соответственно и номер позиции.

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


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