2016-11-09 6 views
2

Hallo ich habe diese Textdatei, wobei die erste Spalte in einem Zeichen die 2. und die dritte eine Ganzzahl ist .. aber ich bin nicht in der Lage, die Werte korrekt zu lesen und zu drucken.kann txt Datei nicht korrekt drucken

Also das die Datei zu lesen versuche:

c 6 
o 4 3 
o 2 4 
o 3 2 
o 1 1 
o 3 3 

Und hier ist der Code:

#include <stdio.h> 
#include <stdlib.h> 

#define N 6 

int main (int argc, char *argv[]) 
{ 
    int i; 
    int M[N]; 
    int U[N]; 
    char c ; 
    FILE* fichier = NULL; 

    fichier = fopen("pb1.txt","r"); 

if(fichier!= NULL) 
    { 
    while(!feof(fichier)) 
    { 
    fscanf(fichier, "%c %d %d", &c, &M[i], &U[i]); 

    printf("%c %d %d \n", c, M[i],U[i]); 
    } 

    } 
} 

Dies ist, was der Ausgang

c 6 1472131424 
o 4 3 

4 3 
o 2 4 

2 4 
o 3 2 

3 2 
o 1 1 

1 1 
o 3 3 

3 3 

ich nicht wie

aussieht haben Ahnung, warum es mir das gibt. danke

+1

Willkommen zu Stack Overflow! Bitte beachten Sie [Warum ist "while (! Feof (datei))" immer falsch?] (Http://stackoverflow.com/q/5431941/2173917) –

Antwort

1

Das erste Problem, das ich hier sehe, ist, verwenden Sie den Wert von i nicht initialisiert. Es ruft undefined behavior auf.

Um zu erarbeiten, i ist eine automatische lokale Variable und wenn nicht explizit initialisiert, wird einen unbestimmten Wert haben. Versuch zu verwenden, führt zu UB.

Sie haben auch nie den Wert i erhöht, der als Index zum Speichern und Drucken der Werte verwendet werden soll.

Schließlich überprüfen Sie immer den Rückgabewert von scanf() und Familie, um den Erfolg sicherzustellen, bevor Sie versuchen, den gescannten Wert zu verwenden.

Das sagte, bitte sehen Sie Why is “while (!feof (file))” always wrong?

Verwandte Themen