Hallo,
ich habe eine Funktion geschrieben um eine Zeile einer Datei auszulesen.
Manchmal kommt es zu Abstürzen, und ich finde den Fehler nicht.
Kann mal jemand über diese Funktion schauen ob das so passt?
1 | S8 GetLine(int fd, char *buf, U8 n)
|
2 | {
|
3 | U8 charsRead=0;
|
4 | U8 readChar;
|
5 |
|
6 | if(n==0) return (-1);
|
7 | if (fd < 0) return (-1);
|
8 |
|
9 | nav_select( fd );
|
10 |
|
11 | if ( file_eof() ) return (-1);
|
12 |
|
13 | while(charsRead<n-1)
|
14 | {
|
15 | readChar=file_getc();
|
16 | if(readChar == FS_EOF) return (-1);//break;
|
17 | if((readChar == '\n')||(readChar == '\r')) {if(charsRead>0) break;}
|
18 | else
|
19 | {
|
20 | *buf++ = readChar;
|
21 | charsRead++;
|
22 | }
|
23 |
|
24 | }
|
25 |
|
26 | *buf = '\0';
|
27 |
|
28 | return charsRead;
|
29 | }
|
n = maximal 100