2016-12-04 4 views
-2

Ich versuche, das erste Zeichen jeder Zeile zu drucken, aber aus irgendeinem Grund gibt mein Code das zweite Element jeder Zeile aus?Falsches Zeichen aus Datei drucken?

Mein Code:

int main(int argc, const char * argv[]) { 
    FILE *file; 
    char c; 
    char array[150]; 
    file = fopen("/Users/bqas/Desktop/m/m/dict", "r"); 
    while((c=fgetc(file))!= EOF){ 
     fgets(array, 150, file); 
     printf("%c",array[0]); 
     printf("\n"); 
    } 
    return 0; 
} 

einige Textzeile;

a un, uno, una[Article] 
aardvark cerdo hormiguero 
aardvark oso hormiguero[Noun] 
aardvarks cerdos hormigueros 
aardvarks osos hormigueros 
+3

, die erwartet wird: 'while (! (C = fgetc (Datei)) = EOF) {' verbraucht 1 Zeichen am Anfang jeder Zeile ... –

+1

Mögliche Duplikat von [ Lesen Sie eine Textdatei Zeile für Zeile und rufen Sie den Inhalt jeder Zeile in C] ab (http://stackoverflow.com/questions/23200822/read-a-text-file-line-by-line-and-retrieve-the- content-of-line-in-c) –

+0

der gepostete Code enthält einige "magische" Zahlen. "magische" Zahlen sind Zahlen ohne Grundlage. I.E. 150. "magische" Zahlen machen den Code viel schwieriger zu verstehen, zu debuggen, zu pflegen. Schlagen Sie mit einer 'enum'-Anweisung oder einer' # define'-Anweisung vor, der "magischen" Zahl einen aussagekräftigen Namen zu geben, und verwenden Sie dann diesen aussagekräftigen Namen im gesamten Code. – user3629249

Antwort

0

das Problem ist in diesem Code:

while((c=fgetc(file))!= EOF){ 
    fgets(array, 150, file); 
    printf("%c",array[0]); 

der Ausdruck: c=fgetc(file) das erste Zeichen jeder Zeile liest und es in die Variable c

Aber der Anruf an printf() kleben ist drucke das erste Zeichen des Arrays [] und nicht das erste Zeichen, das in c ist.

vorschlagen, mit: