#include <stdio.h>
#include <iostream.h>
void main(void)
{
FILE *in;
int n=0;
int data;
in = fopen("test.dat", "w+b");
for (n=0; n<3; n++)
{
cout << "Input digit: ";
flush(cout);
cin >> data;
fwrite(&data, sizeof(int), 1, in);
}
fclose(in);
in = fopen("test.dat", "rb");
while (!feof(in))
{
fread(&data, sizeof(int), 1, in);
cout << "Digit: " << data << endl;
}
fclose(in);
};
Лыжи не едут :-( c fread(), fseek() совладать не могу...
Помогите плз советом бесплатным !
Делаю так:
int read_pack()
{
FILE* in;
head h;
in = fopen("test.tst","rb");
do {
//Прочитаем
fread(&h, sizeof(head), 1, in);
// На след запись
fseek(in, sizeof(head), SEEK_CUR);
printf("%d...\n", h.n,...);
} while (! feof(in));
fclose(in);
return 0;
}
Дык почему-то 1_е две записи читает из _бинарника_, а потом только вторую все время...
Сабж ! Киньте письмишко на мыло, плз...
[email]RTFM-LMD@YANDEX.RU[/email]
Премного благодарен...
А разве при fread() он сам не переходит на след. запись?
Цитата:
Originally posted by wanja
А разве при fread() он сам не переходит на след. запись?
А разве при fread() он сам не переходит на след. запись?
В хелпе конечно так и сказано, что должен...
Ты удивишься, но ни fread() ни fseek() не
помогают 8-)) (вернее не работают как написано)
Но самое интересное, что у файла открытого по fopen()потом EOF отловить у меня ни
feof() ни в самом возврате fseek() мне не удалось.
Очевидно лыжи таки не едут. Кто-бы объяснил в чем дело.
Хотя в общем вопрос снят.... 8-))
Все элегантно решается через хандлы (open())
Цитата:
Originally posted by wanja
А разве при fread() он сам не переходит на след. запись?
А разве при fread() он сам не переходит на след. запись?
Компилилось кстати в BC++ 3.11
Но это так, к слову...
Цитата:
Originally posted by rtfm
Компилилось кстати в BC++ 3.11
Но это так, к слову...
Компилилось кстати в BC++ 3.11
Но это так, к слову...
Да бывают глюки.
Я однажды два дня искал ошибку в проге, а оказалось что fread почему то не читает файл. Матюгался долго.
Цитата:
Originally posted by rtfm
{
FILE* in;
head h;
in = fopen("test.tst","rb");
do {
//Прочитаем
fread(&h, sizeof(head), 1, in);
// На след запись
fseek(in, sizeof(head), SEEK_CUR);
printf("%d...\n", h.n,...);
} while (! feof(in));
fclose(in);
return 0;
}
{
FILE* in;
head h;
in = fopen("test.tst","rb");
do {
//Прочитаем
fread(&h, sizeof(head), 1, in);
// На след запись
fseek(in, sizeof(head), SEEK_CUR);
printf("%d...\n", h.n,...);
} while (! feof(in));
fclose(in);
return 0;
}
Не знаю конечно, вот такой код:
Код:
У меня все работает. Единственная проблема, дык это то, что последнюю запись из файла выводит 2 раза.