Файлы

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
alretran
Сообщения: 2
Зарегистрирован: 16 апр 2009, 15:46

Код: Выделить всё

#include<stdio.h>
#include<conio.h>
#include<string.h>

int main(void)
{   
int max=0,b;
int c,i=0;
FILE *f1;
    
f1=fopen("t2.txt","rt");
if(f1==NULL)printf("Error!");

while( !(feof(f1)) )
{
fread(&b,sizeof(int),1,f1);
if(max<b){
max=b;
i++;
}
}
printf("%d\t%d\t",max,i);

                       
fclose(f1);
getch();
return 0;}
вот, дан файл t2.txt в нем последовательность чисел "1,2,3,..." например, вроде как ищу наибольшее а выдает что то совсем не из этого файла или я чего то не понимаю совсем :(
спасибо тем кто откликнется!
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

Ты читаешь в переменную типа int по 4 байта из файла, а файл текстовый. Соответственно в b за один раз считается 1,2, и всё это будет представлено в виде целого числа.
alretran
Сообщения: 2
Зарегистрирован: 16 апр 2009, 15:46

а как этого избежать? :confused:
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
все, разобрался, спасибо большое за подсказку :)
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
#include<stdio.h>
#include<conio.h>

int main(void)
{
float b,max=0;
FILE *f1;

f1=fopen("t2.dat","rb");
if(f1==NULL)printf("Error!");

while( !(feof(f1)) )
{
fread(&b,sizeof(float),1,f1);
if(max<b)
max=b;

printf("%f\t",max);
}

fclose(f1);
getch();
return 0;}

в продолжение темы так сказать :)
в файле числа: 1.345432 2.789321 3.578562
а результат почему то получается 0.000010 :confused:
Аватара пользователя
Monopo
Сообщения: 125
Зарегистрирован: 06 дек 2007, 20:08
Откуда: Linux

____________________
Юный Падаван
Ответить