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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 24.05.2010, 11:47   #1
Крякозябр
Новичок
Джуниор
 
Регистрация: 24.05.2010
Сообщений: 1
По умолчанию Поиск строки и всех её подстрок в файле

Задание: Ввести с клавиатуры имя текстового файла и строку для поиска. Произвести поиск в тексте строчки и всех её подстрок. Вывести на экран найденные фрагменты и число повторений. Например, для слова "МАША" искать следует "МАША", "МАШ", "МА", "М", "АША", "АШ", "А", "ША", "Ш".

Что я делаю не так?

Код:
#include <stdafx.h> 
#include <string.h>

#define MAX 100                   // размер массива 

int main(int argc, char* argv[])
{
    char  s[MAX];                 // строка для поиска
   
    char substr[MAX];            // искомая подстрока
	char mal[]="";
	char* s1=mal;                // выделение из подстроки других подстрок
    int n = 0;                  // счётчик вхождений подстроки
    char* temp = s;               // устанавливаем указатель на начало строки
    char file_name[MAX];


    puts("Input substr");         // приглашение для ввода подстроки
    gets(substr);                 // вводим подстроку
    puts("Input file name");      // приглашение для ввода имени файла
    gets(file_name);         
    FILE *f;
	f=fopen(file_name, "r");
    int	k=strlen(substr);

for (int i=1; i<k+1; i++)
{     
	       s1=mal;
	       strncat(s1,substr,i);//приписывает заданое количество символо из строки substr r строке s1		
	       puts(s1);
		  
			
				while(!feof(f))
				{
					//пока файл не закончится
					fgets(s,100,f); 
					temp = s;
					n=0;
 
					// в цикле ищем вхождения подстроки до тех пор, пока
					// ф-ция strstr не вернёт NULL - значит искать больше нечего
					while((temp = strstr(temp, s1)) != NULL) 
					{
						// а если нашли то...
						n++;                      // ...увеличиваем счётчик вхождений подстроки...
						temp++;                   // ...сдвигаем указатель на следующий символ для того,
                        // что бы ф-ция strstr начала новый поиск
					}
					  
				}
				printf("N = %d\n", n);          // печатаем количество вхождений
}
	  
getchar();                   
fclose (f);
}
Крякозябр вне форума
Старый 24.05.2010, 12:53   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Вы все делаете не так. Переделывайте программу полностью - она в корне неправильная. Как и ваша тема. Начните с чтения правил оформления тем.
MaTBeu вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] Поиск строки в файле Alex TGM Общие вопросы C/C++ 7 27.04.2010 22:51
Поиск строки в файле Rekky PHP 24 10.12.2009 11:34
поиск строки в файле getUp Общие вопросы C/C++ 7 24.10.2009 23:19
Поиск строки в текстовом файле Black_Ak24 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 24.01.2009 20:30
Поиск строки в файле Gwynbleidd Общие вопросы C/C++ 1 08.10.2008 01:45