Посл.ответ |
Сообщение |
Ранг: 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.07↘0 Статус: Участник
|
Создано: 07 января 2007 09:39 · Личное сообщение · #2
пляши от размера файла
| Сообщение посчитали полезным: |
Ранг: 7.7 (гость) Активность: 0=0 Статус: Участник
|
Создано: 07 января 2007 10:20 · Личное сообщение · #3
а подробней ?
| Сообщение посчитали полезным: |
 Ранг: 124.7 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 07 января 2007 10:26 · Личное сообщение · #4
ну как тут может быть подробнее
смотришь текущую позицию = размеру файла или нет
| Сообщение посчитали полезным: |
 Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 07 января 2007 11:02 · Личное сообщение · #5
Открывай в бинарном виде (+b) и читай, пока размер не кончится.
| Сообщение посчитали полезным: |
Ранг: 7.7 (гость) Активность: 0=0 Статус: Участник
|
Создано: 07 января 2007 12:19 · Личное сообщение · #6
Nitrogen пишет:
у как тут может быть подробнее
смотришь текущую позицию = размеру файла или нет
попробовал. посмотрел розмер файла в HIEW и в цыкл подставил его значение.......
некатит так
| Сообщение посчитали полезным: |
Ранг: 45.1 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 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.04↘0 Статус: Участник
|
Создано: 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.19↘0 Статус: Участник Author of ACKiller
|
Создано: 09 января 2007 03:05 · Личное сообщение · #9
Elektronik
А что теперь не получается? Archer же сказал - открывай в бинарном виде и читай до EOF'а.
| Сообщение посчитали полезным: |