Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/64: Рейтинг темы: голосов - 64, средняя оценка - 4.94
1 / 1 / 0
Регистрация: 18.04.2010
Сообщений: 48
1

Поиск слова в файле

15.06.2011, 13:10. Показов 12465. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите пожалуйста исправить прогу.
нужно найти слово в файле. если нашли, то вывести его.

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
int main(int argc, char *argv[])
{
FILE *f1;
char  search[3]="ааа";
char buf[200];
int i;
f1=fopen("1.txt","r");
while(fgets(buf,200,f1)!=NULL)
{
    i=0;
    while(i<(200-strlen(search)+1))
    {int j=0;
        if(buf[i]==search[j]) {int j1=i;
                                   while ((j1-i<strlen(search))&&(buf[j1]==search[j])){
                           j1++;
                           j++;
                                         }
                         if (j1-i+1==strlen(search)) printf("%s\n",search); 
                        
                                  } 
                        i++;
}}
fclose(f1);
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2011, 13:10
Ответы с готовыми решениями:

Поиск слова в файле
Привет всем! У меня такая проблемка ищу слово по строке, но оно не находит. В чем дело подскажите!...

Поиск слова в файле
Пишу программку для поиска имени в файле и вывода эго в консоль вместе со всеми данными которые к...

Поиск слова в текстовом файле
Почему программа вылетает ? Когда пробую на линуксе, там вообще дамп памяти. Необходимо найти слово...

Поиск слова в текстовом файле
Почему программа вылетает ? Когда пробую на линуксе, там вообще дамп памяти. Необходимо найти слово...

5
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
15.06.2011, 13:20 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <string.h>
#define SIZE 100
int main(){
    int isfound = 0;
    char word[]="findme",line[SIZE];
    FILE *f=fopen("input.txt","r");
    while (fgets(line,SIZE,f)) if (strstr(line,word)) {++isfound; break;}
    printf("%s",isfound?word:" ");
    return 0;
}
Если я так понял задание... Зачем выводить заданное слово - хз
1
166 / 164 / 27
Регистрация: 20.04.2010
Сообщений: 607
15.06.2011, 13:22 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

ошибки.

Цитата Сообщение от *Оля* Посмотреть сообщение
strlen(search))
в вашем массиве нет символа конца строки. стало быть данная функция вернет не верное значение.

Цитата Сообщение от *Оля* Посмотреть сообщение
char *search[3]="ааа";
нельзя так делать.
нужно или так
C++
1
char *search[]="ааа"
или так
C++
1
2
char *search[3];
strcpy(search,"ааа");
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while(i<(200-strlen(search)+1))
        {
            int j=0;
            if(buf[i]==search[j]) 
            {
                int j1=i;
                while ((j1-i<strlen(search))&&(buf[j1]==search[j]))
                {
                    j1++;
                    j++;
                }
                if (j1-i+1==strlen(search)) printf("%s\n",search);
            } 
            i++;
        }
извращение. используйте strstr для поиска подстроки(слова) в строке.
1
1 / 1 / 0
Регистрация: 18.04.2010
Сообщений: 48
15.06.2011, 13:34  [ТС] 4
Цитата Сообщение от Aneron Посмотреть сообщение
извращение. используйте strstr для поиска подстроки(слова) в строке.
=) да...) просто нельзя использовать по заданию)
спасибо за помощь)
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
15.06.2011, 13:44 5
Цитата Сообщение от Aneron Посмотреть сообщение
ошибки.
Цитата Сообщение от *Оля* Посмотреть сообщение
strlen(search))
в вашем массиве нет символа конца строки. стало быть данная функция вернет не верное значение.
Цитата Сообщение от *Оля* Посмотреть сообщение
char *search[3]="ааа";
нельзя так делать.
нужно или так
Код C++
1
char *search[]="ааа"
или так
чего???

как вариант:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    FILE *fp = fopen("1.txt","rt");
 
    char temp[80];
    char word[]="ok";
    int status=0;
 
    while (!feof(fp)) {
        fscanf(fp,"%s",temp);
        if (strcmp(word,temp)==0) { puts(temp); status=1; break; }
    }
    
    if (!status) {
        puts("null\n");
    }
0
166 / 164 / 27
Регистрация: 20.04.2010
Сообщений: 607
15.06.2011, 13:48 6
не
C++
1
char * search[]
а
C++
1
char search[]
опечатался, извиняюсь. во всех остальных местах тоже самое.

OstapBender, и?
0
15.06.2011, 13:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2011, 13:48
Помогаю со студенческими работами здесь

Работа с файлами: поиск слова в файле
С помощью текстового редактора БЛОКНОТ создать файл, содержащий текст, длина которого не превышает...

Поиск слова в файле и запись предложени после этого слова
Допустим есть файл, в нем несколько предложений, &quot;Шла саша по шоссе и сосала сушку.&quot; на нужно...

Поиск слова в файле
помогите пожалуйста реализовать следующее: ввожу в edit слово &quot;ежедевная&quot;, нужно найти это слово в...

Поиск слова в файле
Доброго дня. Господа программисты, нужна помощь вот в каком вопросе: Есть файл .txt с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru