2016-10-17 10 views
-1

Verwendung Dies ist mein Code, wo fp die geöffnete Datei istLesen Datei einen Puffer in c

unsigned char string[10]; 
while(fgets(string, 10, fp)) 
    // do stuff with string 

Jetzt i Schleife wollen jedes Zeichen in dem Array, aber wie ist das Array gefüllt, wenn die Datei 5 Zeichen hatte nur . Enthält es ein EOF-Zeichen oder etwas?

+0

'EOF' ist kein Zeichen. Das ist eigentlich die Idee dahinter. – Olaf

+0

fgets erhalten die angegebene Anzahl an Zeichen oder bis ein EOF- oder Newline-Zeichen gefunden wird. Quelle: http://www.cplusplus.com/reference/cstdio/fgets/ –

Antwort

2

Von fgets():

fgets() liest höchstens eine weniger als Größe Zeichen aus dem Strom und speichert sie in den Puffer auf den s in. Das Lesen stoppt nach ein EOF oder ein Newline. Wenn ein Zeilenumbruch gelesen wird, wird er im Puffer gespeichert. Ein abschließendes Nullbyte ('\ 0') wird hinter dem letzten Zeichen im Puffer gespeichert.

Das bedeutet, wenn die Datei nur 5 Zeichen in einer einzelnen Zeile enthält (das heißt unter der Annahme, nicht mehr als ein Newline), dann string 5 Zeichen enthalten und das sechste Byte in string wird der abschließende Null-Byte sein.

Schleife über sie, können Sie verwenden:

for(i = 0; string[i]; i++) { //until the terminating byte 
    char ch = string[i]; 
    ... 
} 
1

die Zeichenfolge im Array von 0 gespeichert ist - die Länge und endet mit \ 0 so können Sie die Verwendung des \ 0 in Schleife oder den Zugriff auf machen jeder String

char string[100] // 
    for(i=0;string[i]!=\0;i++) // looping until I becomes \0 
     { 
     ch=string[i]; 
     }