Чтение и проверка из файла.

Тема в разделе "Общие вопросы по С и С++", создана пользователем megasasha, 9 ноя 2006.

Статус темы:
Закрыта.
  1. megasasha

    megasasha Гость

    Написал программу на Ассемблере, но вот проблема мне нужно
    включить в неё модуль на C++ для Linux. Как это сделать проблем
    нет, но я не могу правильно написать на С++ вот такой участок:

    Код:

    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif

    #include <stdio.h>
    #include <stdlib.h>


    int main(int argc, char *argv[])
    {


    // Тут я обращаюсь к любому файлу типа:

    if(fopen("primer.exe", "r"))
    {

    И ищу в нем строку любую, например "TEST".
    Если файл содержит строку "TEST", то работает
    условие:

    printf( "Содержит\n");

    printf( "Не содержит\n");
    }


    return EXIT_SUCCESS;
    }


    Где то видел пример, БУКВАЛЬНО В 2 СТРОКИ РЕАЛИЗУЮЩИЙ,
    ОДНАКО НАЙТИ НЕ МОГУ.


    Код:

    FILE *fp;
    char str[128];

    if((fp=fopen(argv[1], "r")) == NULL)
    {
    printf("Не удаётся открыть файл.\n");
    exit(1);
    }

    while(!feof(fp))
    {
    if(fgets(str, 126, fp))
    printf("%s", str);
    }
    fclose(fp);


    КТО ПОДСКАЖЕТ КАК ПРОВЕРИТЬ УСЛОВИЕ НАХОЖДЕНИЯ
    НУЖНОГО ТЕСТА В СТРОКЕ? ЗАРАНИЕ САПАСИБО!!!


    ПРОЩЕ ГОВОРЯ: Блокнот открывает exe файл и в нем можно
    искать текст, например отрывок из сообщения, что выводит
    программа. Мне нужно тоже самое! Проверить *.exe файл
    на наличие некоторого слова.
     
  2. pushkin

    pushkin Гость

    Вот код:
    Код (Text):
    #include <stdio.h>
    #include <string.h>

    int main()
    {
    FILE *pFile = fopen("test.txt", "rt");
    if (!pFile)
    {
    printf("Could not open file\n");
    return -1;
    }

    char buf[1024];

    while (fgets(buf, sizeof(buf)-1, pFile))
    {
    if (strstr(buf, "test text"))
    {
    printf("FOUND!!!\n");
    break;
    }
    }

    fclose(pFile);

    return 0;
    }
    Программа открывает файл test.txt и ищет в нем текст "test text". Если находит, то выводит на экран "FOUND!!!"
     
  3. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    pushkin

    граничные случаи не обрабатываешь
     
  4. pushkin

    pushkin Гость

    Ты имеешь в виду, что нужно сначала прочитать весь файл в буффер, затем удалить оттуда все переходы на новую строку (или заменить их пробелами), а потом искать? Это, конечно, можно - но у нас цель показать человеку, как это примерно делается, а не писать тут супер устойчивый, крутой алгоритм
     
  5. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    я совсем о другом. расмотрим такой случай: строка которую ищем не полностью попала в буфер.
     
  6. pushkin

    pushkin Гость

    С этим абсолютно согласен. Тут уже есть два способа: 1) читать файл целиком в память; 2) написать извращенный алгоритм
     
  7. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    не такой уж и извращенный, тема очень обсосана, хотя бы у того же Кнута
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей