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

Чтение из строк из файла по одному символу - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 89, средняя оценка - 4.74
garrybuilder
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 3
09.04.2009, 17:26     Чтение из строк из файла по одному символу #1
Всем добрый вечер! Делаю контрольную на С++ и так как никогда не писал на С, (только на паскале и делфи) возникли вопросы.
Вопрос первый. Как читать строку из файла по одному символу за раз? вроде нужно использовать getc или fgetc, но что и как именно использовать? Собственно какая разница между getc и fgetc?
И вообще есть ли какие функции (или комбинации функций) для произвольного чтения символов из текстового файла. Ну например прочитать символ номер N из строки номер M
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2009, 17:26     Чтение из строк из файла по одному символу
Посмотрите здесь:

Чтение файла в массив строк C++
чтение строк из файла C++
Чтение строк из файла C++
C++ Чтение строк из бинарного файла.
чтение из файла (массив строк) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
10.04.2009, 01:01     Чтение из строк из файла по одному символу #2
fgetc - функция
getc - может быть функцией а может быть макросом (в случае когда макрос, ей нельзя передавать выражения типа fp++, так как они будут вычисляться два раза внутри макроса), макрос работает быстрее, так как его содержимое вставляется перед компиляцией в код
то есть можешь юзать getc или fgetc, когда у тебя нет выражений с вычислениями для файлового указателя, иначе юзать только fgetc, так как она вычисляет всё перед входом

для произвольного чтения символов из текстового файла
есть функция fseek для перемещение указателя в файле в любую сторону, куда переместишь, оттуда и будет чтение для любой функции чтения из файла
garrybuilder
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 3
10.04.2009, 23:09  [ТС]     Чтение из строк из файла по одному символу #3
насчет fseek я знаю что это перемещает указатель на указанную позицию, ну вот как прочитать символ с этой указанной позиции? getc или fgetc? что лучше? что такое макрос имею смутное представление... пробовал и то и другое - ошибки
если можно приведите плиз пример простого кода
Mecid
 Аватар для Mecid
678 / 227 / 4
Регистрация: 15.10.2007
Сообщений: 1,247
10.04.2009, 23:13     Чтение из строк из файла по одному символу #4
из файла читает fgetc
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
10.04.2009, 23:20     Чтение из строк из файла по одному символу #5
Цитата Сообщение от garrybuilder Посмотреть сообщение
насчет fseek я знаю что это перемещает указатель на указанную позицию, ну вот как прочитать символ с этой указанной позиции? getc или fgetc? что лучше? что такое макрос имею смутное представление... пробовал и то и другое - ошибки
если можно приведите плиз пример простого кода
Смещаешь fseek'ом файловый указатель на нужную позицию и читаешь через getc или fgetc:
C
1
2
3
4
5
int c;
FILE *fp;
.....
while( (c = getc(fp)) != EOF)
   putchar(c);
Будет выводит символы из файла (с позиции, на которую указывает fp) на экран.
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.04.2009, 02:12     Чтение из строк из файла по одному символу #6
читает файл с определённой позиции
Вложения
Тип файла: zip file_position.zip (545 байт, 209 просмотров)
garrybuilder
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 3
11.04.2009, 23:43  [ТС]     Чтение из строк из файла по одному символу #7
Так как консольного С++ у меня нету, поэтому пробую в С++ Builder 6, там выбираю консольное приложение. Попробовал вставить туда код из последнего сообщения

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
 
/* читает файл с определённой позиции и выводит */
main()
{
    FILE *fp;
    int c;
 
    if ((fp = fopen("E:\file.txt", "rb")) == NULL)
        return 1;
    fseek(fp, 2, SEEK_SET);
    while ((c = getc(fp)) != EOF)
        cout << c;
    fclose(fp);
    return 0;
}
Правда заменил putchar(c) на cout << c, так как putchar пишет ошибку:
[C++ Fatal Error] Unit1.cpp(17): F1004 Internal compiler error at 0xc7d0c8 with base 0xc10000
Понятия не имею што это значит, но выглядит страшно
Заменил на cout << c теперь пишет:
[C++ Error] Unit1.cpp(17): E2451 Undefined symbol 'cout'

Вроде как просит библиотеку подключить тока не знаю какую,
пробовал добавлять
#include <iostream.h>
#include <fstream.h>
#include <iostream>
в результате ещё больше ошибок
Ну и адрес файла заменил тоже.
Что посоветуете еще?
з.ы. Посоветуйте где лучше писать консольные проги? В builder'е видимо это будет сложнее сделать?
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
11.04.2009, 23:45     Чтение из строк из файла по одному символу #8
Подключай <iostream>, без .h.
И после инклудов пропиши using namespace std;
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.04.2009, 00:11     Чтение из строк из файла по одному символу #9
Код
"E:\file.txt"
это тоже неправильно, надо \\

компилятор установи
если пишешь на C++, для выполнения C кода подключи <cstdio> с .h или без .h, в Builder'е с .h обычно
это при условии, что он stdio.h не находит
Mecid
 Аватар для Mecid
678 / 227 / 4
Регистрация: 15.10.2007
Сообщений: 1,247
12.04.2009, 01:36     Чтение из строк из файла по одному символу #10
если пишеш на C++ то надо using namespace std;
и подключать так #include <cstdlib>
если на чистом Си то #include <stdlib.h>
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.04.2009, 04:25     Чтение из строк из файла по одному символу #11
Цитата Сообщение от Mecid
если пишеш на C++ то надо using namespace std;
это когда cout юзает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2011, 19:53     Чтение из строк из файла по одному символу
Еще ссылки по теме:

C++ Чтение из файла по одному символу
Чтение строк из файла C++
Чтение строк из файла C++

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

Или воспользуйтесь поиском по форуму:
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
01.02.2011, 19:53     Чтение из строк из файла по одному символу #12
а разве fgetc родом не из си? возможно ли прочитать первый символ в файле используя fstream?

Добавлено через 8 минут

Не по теме:

извините, разобрался...

Yandex
Объявления
01.02.2011, 19:53     Чтение из строк из файла по одному символу
Ответ Создать тему
Опции темы

Текущее время: 09:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru