2016-05-27 18 views
0

Schreiben eines Programms, das Daten aus der .dat-Datei zur Analyse einliest. Die Daten wurden nicht getrennt, so dass fgets benutzt wurden, um die unordentlichen Daten zu übernehmen und in Variablen zu speichern. Die Integer und Floats funktionieren gut, aber die Zeichenfolgen werden nicht ausgegeben.Dateiausgabe eines Arrays von Strings

fgets(tempfile, 8, DataFile); 
strcpy(date_3[i], tempfile); 

Die Daten liest in der Fein- und wird in einer globalen Variablen gespeichert

char date_3[33100][7]; 

Screenshot of data stored in i=0

Ich bin ein Teil der Ausgabe der Analyse einschließlich dieses Array von Strings vorbereitet. ich versuchte

FILE *Output;            
    Output = fopen("file", "w");  
    int i = 0;             
    for (i = 0; i < profile_count; i++)       
    { 
     fprintf(Output," %7s \n",date_3[i]); 
    } 
    fclose(Output); 

Auch dies für die Schleife ohne Kompilierung

fprintf(Output," %7s \n", date_3[0]); 

gibt das gesamte Array.

Insgesamt will es „1FEB73“ drucken

+2

Wenn es das gesamte Array ausgibt, haben Sie wahrscheinlich kein Zeichenfolge-beendendes NUL-Zeichen an der rechten Position. Versuchen Sie, einen temporären Puffer zu erstellen, und kopieren Sie jedoch viele Zeichen in diesen Bereich und fügen Sie dann ein "\ 0" hinzu. –

+1

@AustinHastings Auf das Geld. Konnte es lösen, indem Sie einfach die Variable zu Char-Datum ändern [33100] [8] –

+0

@AustinHastings: Warum nicht eine Antwort machen? – alk

Antwort

0

Wenn es das gesamte Array ausgibt, Sie haben wahrscheinlich nicht ein String-Abschluss NUL-Zeichen in der richtigen Position. Versuchen Sie, einen temporären Puffer zu erstellen und jedoch viele Zeichen in diesen Bereich zu kopieren, und fügen Sie dann eine '\0' hinzu.

Verwandte Themen