Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых)

 eXeL@B —› Программирование —› Чтения файла
Посл.ответ Сообщение

Ранг: 7.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 января 2007 09:30
· Личное сообщение · #1

Проблема банальна, надо прочитать файл
include <stdio.h>
int main ()
{
FILE * pFile;
long n = 0;
pFile = fopen ("myfile.txt","r");
while (!feof(pFile))
{
fgetc (pFile);
n++;
}
fclose (pFile);
printf (n);
}
return 0;
}

но тут возникает проблема, в бинарнике присутсвует символ с хекс кодом "1А", и когда прога пытаеться его прочитать то думает что ето конец файла и выходит с цыкла,не смотря на то что за етим символом есть еще много чего.Не подскажете как ето обойти?




Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 07 января 2007 09:39
· Личное сообщение · #2

пляши от размера файла



Ранг: 7.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 января 2007 10:20
· Личное сообщение · #3

а подробней ?




Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 07 января 2007 10:26
· Личное сообщение · #4

ну как тут может быть подробнее
смотришь текущую позицию = размеру файла или нет




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 07 января 2007 11:02
· Личное сообщение · #5

Открывай в бинарном виде (+b) и читай, пока размер не кончится.



Ранг: 7.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 января 2007 12:19
· Личное сообщение · #6

Nitrogen пишет:
у как тут может быть подробнее
смотришь текущую позицию = размеру файла или нет

попробовал. посмотрел розмер файла в HIEW и в цыкл подставил его значение.......
некатит так



Ранг: 45.1 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 07 января 2007 14:52 · Поправил: xDriver
· Личное сообщение · #7

для C++ Builder

char buf[1];
int h = FileOpen("myfile.txt",fmOpenRead)
if (h) {
int n = 0;
while(FileRead(h,&buf,sizeof(buf))) n++;
FileClose(h);
printf(n);
}




Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 09 января 2007 03:01
· Личное сообщение · #8

Попробуй получить размер так:

FILE *f;
fpos_t p;
int filesize=0;

f = fopen("filename.txt", "r+b");

fseek(f, 0L, SEEK_END);
fgetpos(f, &p);
filesize = p;
fseek(f, 0L, SEEK_SET);

В filesize будет твой размер файла.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 09 января 2007 03:05
· Личное сообщение · #9

Elektronik
А что теперь не получается? Archer же сказал - открывай в бинарном виде и читай до EOF'а.


 eXeL@B —› Программирование —› Чтения файла
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати