Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters
Register

Reply
 
LinkBack Thread Tools
Old 14.10.2005, 14:14   #1
forever blowing winds
 
Азазелка's Avatar
 
Join Date: 10 2002
Location: Internet
Age: 35
Posts: 2,177
Downloads: 0
Uploads: 0
Reputation: 277 | 3
Unhappy help with fscanf, plz

У меня программа, которая работает с массивами и время от времени записывает их в файлы. Запись в файлы проделывается для того, чтоб в случае вылета программы (ну, бывает, свет там отключат или сисадмины буйствуют) данные не терялись. Но вот эта *********** функция fscanf после вылета все читает неправильно.
Вернее, вроде читает нормально данные, которые надо читать как integer, но вот с float-ами у нее проблемы.
Пытаюсь выводить то, что он прочел, но выводит какой-то мусор, который был в этом массиве и до прочтения.

Code:
FILE *temp_arr1 = fopen("temp_arr1.dat","r");
for (int i = 0; i < Sl_Ar; i++)
	fscanf(temp_arr1, "%f\n", &first[i]);
fclose(temp_arr1);
Reply With Quote
Old 14.10.2005, 14:41   #2
the mochinger
 
Hans Andersen's Avatar
 
Join Date: 02 2002
Location: Paranoid Android, @10:50
Age: 38
Posts: 1,894
Downloads: 2
Uploads: 0
Reputation: 204 | 4
Default

some tips:
-stugi vor filen bazvel a
-amen fscanf-iz araj stugi vor eof chi der
Reply With Quote
Old 14.10.2005, 14:57   #3
...overwined...
 
noone's Avatar
 
Join Date: 03 2003
Location: ...tortuga...
Posts: 3,429
Downloads: 3
Uploads: 0
Reputation: 158 | 3
Default

без \n пробовала?...
Reply With Quote
Old 14.10.2005, 17:18   #4
forever blowing winds
 
Азазелка's Avatar
 
Join Date: 10 2002
Location: Internet
Age: 35
Posts: 2,177
Downloads: 0
Uploads: 0
Reputation: 277 | 3
Default

Quote:
Originally Posted by Hans Andersen
some tips:
-stugi vor filen bazvel a
-amen fscanf-iz araj stugi vor eof chi der
Вор ми хат ел асес вонц ет сах стугем (инеты чкркрем) гжот клини
noone, пока нет..
Reply With Quote
Old 14.10.2005, 17:38   #5
the mochinger
 
Hans Andersen's Avatar
 
Join Date: 02 2002
Location: Paranoid Android, @10:50
Age: 38
Posts: 1,894
Downloads: 2
Uploads: 0
Reputation: 204 | 4
Default

smth:
fopen
if (temp_arr1)
{}

while (!feof(temp_arr1))
{
fscanf
i++;
if (i > max)
{lav chi lav chi, mez file a; break}
}
if (i < max)
{lav chi lav chi2, poqr file a}
fclose
Reply With Quote
Old 14.10.2005, 20:47   #6
The splendid
 
AvDav's Avatar
 
Join Date: 07 2004
Location: Pure thoughts
Age: 36
Posts: 3,408
Downloads: 22
Uploads: 0
Reputation: 222 | 3
Default

kam el c++-ov pordzi:
Code:
ifstream is("a.dat");
vector<float> data;
copy(istream_iterator<float>(is), istream_iterator<float>(), back_inserter(data));
Reply With Quote
Old 14.10.2005, 21:01   #7
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

это как раз
memset(first, 0, sizeof(first[0] * Sl_Ar));

ну и массив - у тебя floating ili double?
Reply With Quote
Old 14.10.2005, 21:59   #8
forever blowing winds
 
Азазелка's Avatar
 
Join Date: 10 2002
Location: Internet
Age: 35
Posts: 2,177
Downloads: 0
Uploads: 0
Reputation: 277 | 3
Default

Quote:
Originally Posted by nm
это как раз
memset(first, 0, sizeof(first[0] * Sl_Ar));

ну и массив - у тебя floating ili double?
double
...
И разрази меня гром если я что-нибудь поняла
Reply With Quote
Old 15.10.2005, 09:06   #9
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

Quote:
Originally Posted by Азазелка
double
...
И разрази меня гром если я что-нибудь поняла
1. обнулять массив перед записью туда данных просто хороший стиль


man fscanf
Code:
 l (ell)  Indicates that the conversion will be one of dioux or n and the
              next pointer is a pointer to a long int (rather than int), that
              the conversion will be one of a, e, f, or g and the next pointer
              is a pointer to double (rather than float), or that the conver-
              sion will be one of c, s or [ and the next pointer is a pointer
              to an array of wchar_t (rather than char).
Reply With Quote
Old 15.10.2005, 11:15   #10
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 35
Posts: 21,717
Downloads: 2
Uploads: 0
Reputation: 250 | 7
Default

Quote:
Originally Posted by Азазелка
double
...
И разрази меня гром если я что-нибудь поняла
Ну так, милая моя, если double, тогда lf/g/e, если float, тогда f/g/e. Нельзя путать, божий дар (64/80 битов) с яичницей (32)
Reply With Quote
Old 15.10.2005, 12:36   #11
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

Quote:
Originally Posted by Agregat
Ну так, милая моя, если double, тогда lf/g/e, если float, тогда f/g/e. Нельзя путать, божий дар (64/80 битов) с яичницей (32)

так и запишем - согласно комитету IEEE божий дар имеет размер 64 или 80.
Reply With Quote
Old 17.10.2005, 15:18   #12
forever blowing winds
 
Азазелка's Avatar
 
Join Date: 10 2002
Location: Internet
Age: 35
Posts: 2,177
Downloads: 0
Uploads: 0
Reputation: 277 | 3
Default

Всем спасибо, ребята, кажись заработало
Reply With Quote
Old 17.10.2005, 15:20   #13
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 35
Posts: 21,717
Downloads: 2
Uploads: 0
Reputation: 250 | 7
Default

Quote:
Originally Posted by nm
так и запишем - согласно комитету IEEE божий дар имеет размер 64 или 80.
На самом деле может быть и 32 условие такое
sizeof(float) <= sizeof(double), а количество битов - это уже от лукавого
Reply With Quote
Old 17.10.2005, 15:20   #14
the mochinger
 
Hans Andersen's Avatar
 
Join Date: 02 2002
Location: Paranoid Android, @10:50
Age: 38
Posts: 1,894
Downloads: 2
Uploads: 0
Reputation: 204 | 4
Default

nu i v chem imenno byla problema?
Reply With Quote
Old 17.10.2005, 15:23   #15
forever blowing winds
 
Азазелка's Avatar
 
Join Date: 10 2002
Location: Internet
Age: 35
Posts: 2,177
Downloads: 0
Uploads: 0
Reputation: 277 | 3
Default

Quote:
Originally Posted by Hans Andersen
nu i v chem imenno byla problema?
Фиг его собственно, я даже не уверена, что он все нормально читает. Но на результаты это уже сильно не влияет, так что пускай живет Кажется проблема была именно в том, о чем говорил Агрегат.
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 08:16.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.