Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
NAYGER
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 26
#1

Поиск в файле и вывод на экран - C++

07.12.2009, 07:40. Просмотров 2097. Ответов 7
Метки нет (Все метки)

Имеется txt файл, произвольно заполненный:
01101210
:2
//пустая строка
12434
:8
//пустая строка
0110
:9
//пустая строка
849
:11

Как найти в файле значение N (пусть N=0110) и если N совпало со строкой (полное совпадение), то вывести результат стоящий на следующей строке после знака ( : ).
В этом варианте должна выводиться на экран 9

C++
1
2
3
4
5
6
7
8
9
10
11
12
FILE *file;
char* file_name = "file.txt";
file = fopen ("file.txt","r");
while (!feof(file))
{
//код необходимый для поиска
}
UpdateData(true);
//вывод результата в поле static или edit
UpdateData(false);
 
fclose(file);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2009, 07:40     Поиск в файле и вывод на экран
Посмотрите здесь:
C++ Поиск в .txt файле и вывод на экран
C++ Поиск информации в файле и ее вывод
C++ Работа с файлами (поиск и вывод чисел в файле)
C++ Как сделать поиск в JSON-файле с выводом на экран
C++ Реализовать поиск значения в файле и вывод на консоль структуры, в которой расположено значение
Поиск в текстовом файле слова и вывод блока текста, в котором оно встретилось C++
C++ Поиск и вывод на экран терминала элемента массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.12.2009, 09:16     Поиск в файле и вывод на экран #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
 
main()
{
    FILE *ifp;
    char f1[100],
         f2[100];
    const char *patt = "0110";
    
    if (!(ifp = fopen("file", "r")))
        return 1;
    
    while (fscanf(ifp, "%s\t:%s\t", f1, f2) == 2)
        if (!strcmp(f1, patt))
            printf("%s" "\n", f2);
    
    fclose(ifp);
    
    return 0;
}
Добавлено через 1 минуту
C
1
while (!feof(file))
при ошибке чтения такой флаг не выставится
NAYGER
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 26
07.12.2009, 09:56  [ТС]     Поиск в файле и вывод на экран #3
Две ошибки на return 1 и return 0:
error C2562: 'OnOK' : 'void' function returning a value

Может так сделать?
C++
1
if (!(ifp = fopen("file", "r"))) break;
Использую Visual C++ 6.0

Добавлено через 19 минут
C++
1
printf("%s" "\n", f2); // вывод на экран
И еще хотелось бы узнать, как будет выглядеть код для вывода результата в поле Static или Edit?
C++
1
2
3
UpdateData(true);
S= ???; //вывод в поле Static
UpdateData(false);
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.12.2009, 10:06     Поиск в файле и вывод на экран #4
там int main

C
1
int main(void)
break срабатывает только для циклов и switch, return относится к функции main (результат возвращается в операционную систему, число можно проанализировать и выполнить команды дальше какие-нибудь)

поля, если это строки, попробуй strcpy(поле, f2)
NAYGER
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 26
07.12.2009, 10:47  [ТС]     Поиск в файле и вывод на экран #5
Поле Static:IDC_STATIC1 Type:CString Member:S

strcpy(S, f2);

Ошибка:
: error C2664: 'strcpy' : cannot convert parameter 1 from 'class CString' to 'char *'

В поле выбора типа для Static только Cstring.
NAYGER
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 26
07.12.2009, 15:23  [ТС]     Поиск в файле и вывод на экран #6
Ну так что, как ошибку исправить?

Добавлено через 23 минуты
Все, вроди бы разобрался
NAYGER
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 26
08.12.2009, 10:18  [ТС]     Поиск в файле и вывод на экран #7
А если txt файл будет иметь вид:
01010101010110101010101010101010110101101011101010
00000000000000001111111111111111111111111111111111
:8

01010111111111111111111111111111111111000000000000
:5

11111111111111111111111111111111111111111111111111
01011111111111110000000000000000000000000000000000
11111111000000000000111111110000000000011111111110
:7

как быть в таком случае?

Добавлено через 35 минут
Все, кажись тоже разобрался, надо вместо
C++
1
const char *patt = "0110";
написать
C++
1
2
char patt[10000] ="01010101010110101010101010101010110101101011101010
00000000000000001111111111111111111111111111111111";
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2009, 11:07     Поиск в файле и вывод на экран
Еще ссылки по теме:
C++ Поиск и вывод на экран сведений о людях в массиве, родившихся не ранее указанного года
C++ Поиск в файле
C++ Поиск в файле
C++ Поиск в файле
Поиск в файле C++

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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.12.2009, 11:07     Поиск в файле и вывод на экран #8
malloc ещё есть, там поля создать, шаблон
для копирования strcpy
Yandex
Объявления
08.12.2009, 11:07     Поиск в файле и вывод на экран
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru