2017-01-24 4 views
0

Ich habe einen ähnlichen Code.Schreiben und Lesen von einer Datei

#include <stdio.h> 

int main() { 
    FILE* file = fopen("file.txt", "w+"); 
    fputc('A', file); 
    fflush(file); 
    char buff; 
    fscanf(file, "%s", &buff); 
    printf("read data: %s", &buff); 
    fclose(file); 
    return 0; 
} 

Ich möchte ohne Datei schließen geschriebene Daten lesen. Aber in Buff gibt es keine Daten. Warum? Wenn ich Datei nach dem Schreiben zu schließen und dann alles zu lesen, funktioniert.

+3

Sie müssen versuchen, dorthin zurück, wo die Daten zur Verfügung zu lesen ist. Oder spulen Sie die Datei nach dem Schreiben zurück. –

+0

Und nicht '% s' zum Einlesen oder' printf() 'von einem einzelnen' char' verwenden. –

Antwort

2

Sie sollten rewind(file) verwenden, um den Positionszeiger, der dem Dateistrom zugeordnet ist, an den Anfang der Datei zu setzen.

Ihr Beispiel funktioniert gut:

#include <stdio.h> 

int main() { 
    FILE* file = fopen("file.txt", "w+"); 
    fputc('A', file); 
    fflush(file); 
    rewind (file); 
    char buff [80]; 
    fscanf(file, "%s", buff); 
    printf("read data: %s", buff); 
    fclose(file); 
    return 0; 
} 
+0

Vielen Dank für Ihre Hilfe – Jivan

2

Rewind zurück zum Anfang der Datei:

rewind(file); 
Verwandte Themen