2017-01-24 16 views
0

私は同様のコードを持っています。ファイルからの書き込みと読み取り

#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; 
} 

書いたデータをクローズしないでください。しかし、バフでは存在しないデータです。 なぜですか? 私は書き込み後にファイルを閉じて、すべてを読み込んだら作業した。

+3

をあなたがデータを読み取ることが可能です場所に戻って模索しなければなりません。また、書き込み後にファイルを巻き戻すこともできます。 –

+0

そして '%s'を使って一つの' char'を読み込んだり、 'printf()'から読み込んだりしないでください。 –

答えて

2

ファイルストリームの位置インジケータをファイルの先頭に設定するには、rewind(file)を使用する必要があります。

細かい作業

あなたの例、:バックファイルの先頭に

#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

ありがとうございます – Jivan

2

巻き戻し:

rewind(file); 
関連する問題