Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с чтением 26 и ему подобных символов 
:(
    Опции темы
En_t_end
Дата 3.9.2005, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Наблюдается проблема с сабжем. Причем, чтение может проводиться как через std::ifstream::get() так и через fgetc() - итог один. Чтение не производиться и наблюдается ряд побочных эфектов. Для фстримов наблюдается эфект зацикливания в потоке символа стоящего перед нужным мне 26-тым(это такая стрелочка). Для FILE *fopen() - потоков наблюдается завершение с ошибкой.
Вопрос:
Как же мне все таки прочить этот треклятый 26-той символ ?
PM MAIL ICQ Skype GTalk Jabber   Вверх
asdf
Дата 3.9.2005, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

Репутация: нет
Всего: 11



попробуй так
Код

ifstream if1(name);
const int SIZE=0x10000;
char cha[SIZE];
if1.readsome(cha, SIZE);

--------------------
... 
PM MAIL   Вверх
chaos
Дата 3.9.2005, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



че то я не понял smile
или я чето не допонимяю то ли че, но вот я чиркнул пример и у меня все работает
Код

#include <stdio.h>
#include <fstream>

using namespace std;

int WriteData(const char *lpszFileName)
{
    FILE *f = fopen(lpszFileName, "wb");
    if (f)
    {
        for (int ch = 0; ch < 256; ch++)
            fprintf(f, "%c", ch);
        fclose(f);
        return 1;
    }

    return 0;
}

void ReadData1(const char *lpszFileName)
{
    FILE *f = fopen(lpszFileName, "rb");
    if (f)
    {
        unsigned char ch;
        while (! feof(f))
            ch = fgetc(f);

        fclose(f);
    }
}
void ReadData2(const char *lpszFileName)
{
    fstream f;
    f.open(lpszFileName, ios::binary | ios::in);
    unsigned char ch;
    
    while (! f.eof())
        ch = f.get();
}

int main(int argc, char* argv[])
{
    if (WriteData("c:\\26.txt"))
    {
        ReadData1("c:\\26.txt");
        ReadData2("c:\\26.txt");
    }
    return 0;
}



PS наверное ты его открываешь как текстовый

Это сообщение отредактировал(а) chaos - 3.9.2005, 11:53
PM WWW   Вверх
Mayk
Дата 3.9.2005, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



26 это случайно не признак завершения файла ака EOF?
Открой файл как бинарник. Что-то около ios::binary(ну не люблю я iostream'ы, редко пользуюсь, не помню точно) и "rb"


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
En_t_end
Дата 28.1.2006, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Поднимаю вопрос. Опять эти клятые управляющие символы. Вопрос, как игнорить их при чтении допустим ReadFile или аналогами из std ? Нужно полное игнорирование, за EOF я не беспокоюсь - сначала узнаю размер файла, поэтому проблем с выходом за файл нет. Читатать нужно по-символьно.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Dov
Дата 28.1.2006, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Код

if(iscntrl(ch))   //если управляющий символ



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
threef
Дата 30.1.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



Тут все тебе намекают, читай их как бинарные.
fopen("myfle", "rb")
еще раз: "rb"
а дальше хоть так :

Код

char get(FILE* f)
{
  char x;
  fread(&x,1,1,f);
  return x;
}

PM MAIL   Вверх
JackYF
Дата 31.1.2006, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



если через iostream 'ы:

Код

iostream f("filename.txt",ios::binary);
char mychar;
f.get(mychar);
if (mychar==26) {/*...*/}



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.