2016-04-26 9 views
2

私はCを使ってファイルを書いたり読んだりする方法を探していました.fopen( "foo"、 "r +")またはfopen( "foo"、 "w +")を使用できることを発見した後、ダミープログラムを試してみてください。 これはプログラムです:同じファイルを読み書きするためにfopen "w +"をcで使う方法はありますか?

#include <stdio.h> 
int main(){ 
    char reader[81]; 
    FILE *USE = fopen("dummy.txt", "w+"); 
    fprintf(USE,"whatever \r\nhello"); 
    while(fgets(reader, 80, USE)) { 
     printf("%s", reader); 
    } 
    fclose(USE); 
    return 0; 
} 

アイデアはdummy.txtと呼ばれる新しいファイルを作成することでした。このプログラムが実行されるたびに、dummy.txtに2行が書き込まれ、コマンド行または端末にその行が表示されます。ご覧のとおり、これは最も有用なプログラムではありませんが、これを行う方法を知っていることは将来的に非常に役立ちます。あなたがファイルに書き込まれた後、ファイルポインタがファイルの末尾にある

fprintf(USE,"whatever \r\nhello"); 

rewind(USE); //<<< add this 

while(fgets(reader, 80, USE)) { 

すべてのヘルプはあなたがファイルを巻き戻すのを忘れウェルカム

答えて

2

fprintf(USE,"whatever \r\nhello"); 

rewind(USE); // put the file pointer to the begin of file; 

while(fgets(reader, 80, USE)); 

別の方法は、fseekを使用している:

int fseek(FILE *stream, long int offset, int whence) 

  • ストリーム - これはポインタでありますを識別するFILEオブジェクト0ストリーム。

  • offset - これはどこからオフセットするかのバイト数です。

  • whence - オフセットが追加される位置です。

    1 - SEEK_SET Beginning of file 
    2 - SEEK_CUR Current position of the file pointer 
    3 - SEEK_END End of file 
    

また、あなたが使用することができます:

long int ftell (FILE * stream); 

をストリームの現在位置のためには、次の定数のいずれかで指定された
です。

Hereは、巻き戻し

+0

対fseekの詳細については、答えをどうもありがとうございます、これは私が:) :)探していたもの:) – Errowdrigorena

+0

あなたは歓迎されているよりもはるかに多くのです! – granmirupa

0

です。したがって、あなたが書いたものを読むためには、ファイルの先頭にファイルポインタを設定し、rewindを使用する必要があります。

ファイルポインタを冒頭以外の場所に配置する場合は、fseekを使用します。 ftellは、ファイルポインタが現在どこにあるかを教えてくれます。あなたの問題に関連していない

サイドノート

は、すべて大文字の名前は通常、マクロだけのために使用されている、などUSEなどすべて大文字の変数名を使用しないでください。あなたはrewind機能を使用する必要があり、再びファイルを読み込むための

関連する問題