ファイル操作
今回は、ファイルを開き、データを読み込むプログラムを作ります。
そのために関数がいくつか登場します。
今回は以下の関数でやります。関数名をクリックすると詳しい解説。
関数の名前と意味はそんなに難しくないと思います。
ファイルを読む
サンプルです。
#console
#include<vcrt71.sbp>
Dim fp As *FILE'早速ですが構造体ポインタを宣言します。
Dim fsiz As Long
Dim buf As *Byte
'ファイルhage.txtを開きます
fp = fopen("hage.txt" , "r")
If fp = NULL Then Error()
'ファイルサイズを計算します。
fseek(fp , 0 ,SEEK_END)
fsiz = ftell(fp)
fseek(fp , 0 , SEEK_SET)
'bufにファイルを読み込みます。
buf = malloc(fsiz)
fread(buf , 1 , fsiz , fp)
'読み込んだのでファイルを閉じます。
fclose(fp)
'読み込んだデータを表示します。
printf(Ex"%s\n" , buf)
'最後にメモリを開放しておきます。
free(buf)
Sub Error()
printf(Ex"エラーが発生しました。\n終了します。\n")
exit(1)'強制終了する関数(引数0=正常終了、1=以上終了)
End Sub
ファイルに書き込む
今度は書き込みです。読み込みと少し違うだけです。
#console
#include<vcrt71.sbp>
Dim fp As *FILE
Dim buf[100] As Byte
'ファイルhage.txtを開きます("r"が"w"に)
fp = fopen("hage.txt" , "w")
If fp = NULL Then Error()
'bufに書き込む内容をセット。
'100バイトまでなら何でもok
strcpy(buf , Ex"name:ななしさん\ne-mail:sage\nカキコテスト\n")
'書き込む
fwrite(buf , 1 , strlen(buf) , fp)
'ファイルを閉じます。
fclose(fp)
Sub Error()
printf(Ex"エラーが発生しました。\n終了します。\n")
exit(1)'強制終了する関数(引数0=正常終了、1=以上終了)
End Sub
ファイル操作はそんなに難しいものではありません。
開いて、読み書きして、閉じるだけです。関数を機械的に使うだけです。
問題はFILE構造体ですが、使う機会はめったに無いと思います。
また、FILE構造体はコンパイラによっても定義が違います。
関数の使い方
fopen:ファイルを開く
fclose:ファイルを閉じる
fread:ファイルから読み込む
fwrite:ファイルに書き込む
fseek:ファイルの位置を設定する
ftell:現在のファイル位置を返す