2016-12-17 2 views
0

Ich versuche zu lesen - schreibe eine TXT-Datei, die mehrere Informationen in verschiedenen Zeilen hat. Es ist in Form von:Lesen - Schreibe Txt-Datei in C

Number-LicencePlate NumberOfSeats 

Name number phonenumber 

Name number phonenumber 

Name number phonenumber 

die ersten Zeile zu lesen, ist es ziemlich einfach ist, mit fscanf Aber wie kann ich den Rest davon mit fscanf las 3 verschiedene Variablen (Name, Nummer, Telefon) zu erhalten ?

Schreiben auf diese Datei in der gleichen Form kommt zu einem späteren Zeitpunkt wird aber versuchen, es zu trainieren ..

FILE *bus; 
bus = fopen ("bus.txt","r"); 
if (bus == NULL) 
{ 
    printf("Error Opening File, check if file bus.txt is present"); 
    exit(1); 
} 
fscanf(bus,"%s %d",platenr, &numberofseats); 
printf("Bus Licence plate Nr is: %s and number of seats is: %d", platenr, numberofseats); 
+2

Tonnen Duplikate hier: https://www.google.com/search?q=how+to+read+text+file+using+fscanf+site%3Astackoverflow.com – alk

+0

Verwenden Sie eine While-Schleife! –

+0

Mögliches Duplikat von [In C, wie soll ich eine Textdatei lesen und alle Zeichenfolgen ausgeben] (http://stackoverflow.com/questions/3463426/in-c-how-should-i-read-a-text-file -und-print-all-strings) –

Antwort

0

Sie eine Schleife verwenden, um sollte zu erreichen, was Sie als Ihren Code suchen liest nichts außer der ersten Zeile als "FILE *bus;" ist ein Zeiger auf die erste Zeile der Textdatei.

Um alles zu lesen, können Sie eine einfache while-Schleife verwenden, indem Sie das Ende der Datei (EOF) überprüfen. Es gibt 2 Methoden, die mir bekannt sind und hier sind sie;

while(!feof(bus)){ 
     fscanf(bus,"%s %d",platenr, &numberofseats); 
     printf("Bus Licence plate Nr is: %s and number of seats is: %d", platenr, numberofseats); 
    } 

Dieser Codeblock wird jede Zeile gedruckt werden, nachdem es zu lesen. Wir haben "feof (FILE * stream)" verwendet; Funktion Learn More Here. Es gibt auch alternative Möglichkeiten für andere Artikel How to read a whole text file

Aber ich werde es hier auch diese Lösung setzen.

while(fscanf(bus,"%s %d",platenr, &numberofseats)!=EOF){ 
     printf("Bus Licence plate Nr is: %s and number of seats is: %d", platenr, numberofseats); 
    }