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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2010, 13:22   #1
slim>>>
Пользователь
 
Аватар для slim>>>
 
Регистрация: 10.10.2009
Сообщений: 58
Восклицание Поиск строки в txt файле (С++)

Люди! Помогите пожалуйста!
Есть прога которая открывает текстовый файл, вытягивает строки по очереди и сравнивает их с введенными данными, но при сравнении не находит подходящюю строку, хотя оно есть.
Для сравнения пользуюсь функцией strcmp.

Гляньте пожалуйста в чем проблема :

Код:
#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;

int main(int argc, char** argv)
{
    FILE * f;
    f = fopen("test.txt","r");

    char buf[10];

    fgets(buf,sizeof(buf),f);
    cout<<buf<<endl;

    char in[10];
    cin>>in;
    int i = strcmp(buf, in);
    
    cout<<i<<endl;
    
    fclose(f);
    return 0;
}
Учусь программировать

Последний раз редактировалось Stilet; 12.08.2010 в 13:36.
slim>>> вне форума Ответить с цитированием
Старый 12.08.2010, 13:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Проверил твой код. Вполне все нашло - strcmp вернул 0 на то что я ввел.
Другое дело что чтение файла у тебя не в цикле, потому читается только одна самая первая строка, и даже не строка а часть строки.
Читай через fscanf пока !feof(f)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2010, 13:50   #3
slim>>>
Пользователь
 
Аватар для slim>>>
 
Регистрация: 10.10.2009
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
потому читается только одна самая первая строка, и даже не строка а часть строки.
В смысле часть строки?
Когда вывожу fgets - выводится вся строка (через cout),
у меня в файле одна строка "Apple" когда сравниваю с ввода - выдает 1.
Учусь программировать

Последний раз редактировалось slim>>>; 12.08.2010 в 13:58.
slim>>> вне форума Ответить с цитированием
Старый 12.08.2010, 14:50   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
у меня в файле одна строка "Apple" когда сравниваю с ввода - выдает 1.
А с чем ты сравниваешь? Да и потом я не помню чем твой buf[10] дополняется, ведь ты заказал 10 символов, а Apple - 5 символов.
ИМХО лучше через fScanf считывать строки или вообще посимвольно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2010, 15:01   #5
slim>>>
Пользователь
 
Аватар для slim>>>
 
Регистрация: 10.10.2009
Сообщений: 58
По умолчанию

Наконецто догнал,точно буфер 10!
Просто хотел разобратся с fgets.
Спасибо за помощь!
Учусь программировать
slim>>> вне форума Ответить с цитированием
Старый 12.08.2010, 15:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Просто хотел разобратся с fgets.
Ну вот и разобрался
Да поправят меня мои коллеги - специалисты в Си, ИМХО gets одна из легендарных функций которых не рекомендуют использовать.
Я лично fscanf использую, пока не жаловался, он кстати по-моему завершает нулем строку сам.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удалить пустые строки в txt файле andreton Помощь студентам 3 05.06.2010 21:35
[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
Чтение/Поиск в txt файле и вывод в ComboBox limnique Общие вопросы C/C++ 2 05.09.2008 23:01