Use of fgets () Re: use of library functions

From: Stephan Heising (stephan.heising@cern.ch)
Date: Fri Nov 26 1999 - 14:37:50 MET


Hello,

I just found that the code works with old text files but not with the 
new ones.
The code:

char Line[4][200], *ctmp;
Int_t i
.
.
.
    for (i=0;i<4;i++) 	// i<6 reduced to i<4 since 
    {			// only for lines with data for each event
       fgets (Line[i], 199, fin);
       printf ("%d: /%s/\n", i, Line[i]);
       ctmp = strrchr (Line[i], '\n');
       *ctmp = 0;
    }


file 1 (working)

====================
19.05.1999  16:38 Uhr
0 1.000000 40.000000 40.000000 1.750000 103.500000 106.400000 
108.400000 99.600000 0
75 25 4351.747464 169.749000 4370.416641 61.035629
208 25 10675.206564 -280.789516 10615.483903 -137.398180

19.05.1999  16:40 Uhr
1 0.000000 40.000000 40.000000 1.750000 103.500000 106.400000 
108.400000 99.600000 0
75 25 4372.466790 178.117624 2511.927466 63.932411
208 25 10779.329067 -283.178774 10773.783207 -138.049098

19.05.1999  16:50 Uhr
2 4.000000 40.000000 40.000000 1.750000 103.500000 106.400000 
108.400000 99.600000 0
75 25 4401.120735 171.148528 4399.890736 61.358194
208 25 10727.505825 -265.992060 11533.359946 -130.553110

19.05.1999  16:53 Uhr
3 4.000000 40.000000 40.000000 1.750000 103.500000 106.400000 
108.400000 99.600000 1
75 25 4084.020264 294.414557 4031.374977 88.038480
208 25 11078.011014 -306.585555 10999.495482 -92.667140

19.05.1999  17:01 Uhr
4 0.000000 40.000000 40.000000 1.750000 103.500000 106.400000 
108.400000 99.600000 1
75 25 4089.338339 297.399561 3996.689840 88.485029
208 25 11107.414087 -245.536366 11109.918239 -67.067850

19.05.1999  17:12 Uhr
5 0.000000 20.000000 15.500000 1.750000 108.900000 110.900000 
113.000000 104.700000 1
75 25 4070.847819 302.518123 4083.002473 91.158164
208 25 11040.040218 -261.976085 11228.250998 -69.677470

====================


file 2 (not working)

====================
24.11.1999  14:46 Uhr
0 0.000000 300.000000 11800.000000 6.060000 0.000000 0.000000 0.000000 
0.000000 0
53 25 3518.915765 -12.759758 3528.118331 -2.619025
195 25 0.00000 0.000000 0.00000 0.000000

24.11.1999  15:46 Uhr
1 0.000000 200.000000 4500.000000 6.060000 32.804681 36.069023 
31.767028 28.098742 0
53 25 3538.190581 -249.798066 3538.087533 -27.432829
195 25 0.00000 0.000000 0.00000 0.000000

24.11.1999  15:49 Uhr
2 1.000000 200.000000 4300.000000 6.060000 31.430782 34.657509 
30.321846 26.666945 0
53 25 3516.999586 -233.146991 3516.869163 -25.709281
195 25 0.00000 0.000000 0.00000 0.000000

24.11.1999  15:56 Uhr
3 2.000000 200.000000 4300.000000 6.060000 30.578457 33.320395 
29.344905 25.752535 0
53 25 3491.668476 -252.445214 3491.529496 -27.763021
195 25 0.00000 0.000000 0.00000 0.000000

24.11.1999  15:57 Uhr
4 2.000000 300.000000 8800.000000 6.060000 37.443463 39.752789 
34.672330 31.039665 0
53 25 3509.489705 -216.538263 3509.283206 -23.883268
195 25 0.00000 0.000000 0.00000 0.000000

24.11.1999  16:00 Uhr
5 2.000000 350.000000 14000.000000 6.060000 38.590848 41.445488 
35.689402 32.044243 0
53 25 3508.459410 -199.534426 3508.527873 -21.996360
195 25 0.00000 0.000000 0.00000 0.000000

====================

the line seperator is for both text files „\r\n“ or 0x0d 0x0a, the DOS 
newline
characters.

what is the difference. For file 1 fgets reads until first occurence 
of newline
whereas in file 2 fgets reads the allowed 199 characters reading over 
2 newlines.

Cheers Stephan Heising



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:43 MET