PSP xvi

PSPプログラミングを教えるブログ(本気で頑張る人アクセス大歓迎サイト)

PSP-X.gif

記事の間違いを報告  新アップローダー
記事修正情報 PSPプログラミング資料 自作ゲーム PSP用エミュレータ リンク

公認リンク
公式PSP専科 公式PSVita専科 はじめるPSPSDK PSP EXEC GAME M@STER PSP 猫山のYouTubeチャンネル

TAG
全記事にタグをつけています  http://nekoyama2gillien.blog36.fc2.com/?tag=タグ
PSP PSPプログラミング DXライブラリPortable OSLib ショートプログラム ハローワールド
PSP自作ゲーム PSP自作ソフト エミュレータ ゲームアーカイブス PSP動画
動画 初音ミク ミクミクダンス MMDドラマ ゲーム 魔法少女まどか☆マギカ 侵略!イカ娘
アイドルマスター

このブログについて

このブログでは、非公式のPSPソフト、いわゆる自作ソフト( PSP Homebrew )を作る事を目的とします。

著作権などの こまかい利用規約については、こちらを開いてお読み下さい

このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ


当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。


このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all

スポンサーサイト 

--/--/--
--. --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[edit]

CM: --
TB: --

page top

メモリースティックへのファイル書き込みの方法(C++ プログラミング)をご紹介

● ファイルを書き込みモードで開く関数を ご紹介
・FILE *fp の場合
  fopen( "ファイル名", "w");
    FILE *fp 用のファイルを開く関数です。
    "ファイル名"には、メモリースティック上の PATH を書きます
    返り値は、ファイル・オープンエラーなら NULL (== 0x00 )
          正常に ファイル・オープン出来たなら ファイルハンドル

・int fp の場合
  sceIoOpen( "ファイル名", PSP_O_CREAT | PSP_O_WRONLY | PSP_O_TRUNC, 0777);
    int fp 用のファイルを開く関数です。
    "ファイル名"には、メモリースティック上の PATH を書きます
    返り値は、ファイル・オープンエラーなら -1
          正常に ファイル・オープン出来たなら ファイルハンドル

  注 : ファイル名は、PATH (パス:道)で表記します。絶対PATHと相対PATHがあります。
  絶対PATH とは、ファイル名をデバイス名から 全部表記したもの。フルPATH
  相対PATH とは、ファイル名をカレントディレクトリを基準として相対的な差分で表記したもの。


● ファイルの書き込みに使える関数を ご紹介
・FILE *fp; の場合
  put( int data, FILE *fp );
    1バイト書き込み関数です
    data は、書き込む1バイトデータを int 型 整数値(もしくは文字1個など)で書きます
    fp は、ファイルオープン時のファイルハンドルを書きます
    返り値は、書き込みできたデータの値

  fputs( char *str, FILE *fp );
    文字列の書き込み関数です。
    文字列の終わりは、NULL文字( == 0x00 )になっていなければ なりません。
    書き込み時、文字列の末尾に、0x0d、0x0a、0x00 の3バイトが自動追加されます。
    fp は、ファイルオープン時のファイルハンドルを書きます
    返り値は、いちばん最後に書き込みした1文字

・int fp; の場合
  sceIoWrite(int fp, char *buff, int size);
    連続バイト書き込み関数です
    fp は、ファイルオープン時のファイルハンドルを書きます
    buff は、書き込む連続データの先頭アドレスを書きます
    size は、書き込みするデータのサイズ( 単位は バイト )を書きます
    返り値は、実際に書き込みできたデータのバイト数(負ならエラー発生)


では、まず、処理の手順を 日本語で 書いてみます。

【 手順 】
  1. 書き込みモードでファイルを開いて
  2. ファイル・オープンエラーが発生したら、ファイルを閉じてから エラーで終了する → 異常終了
  3. (ファイル・オープンエラーが発生しないなら、以下を実行)
  4. データを書き込みして
  5. ファイルを閉じて
  6. 終了 → 正常終了


上記手順を C++プログラミングしてみます。

【 プログラム・コード その1 FILE *fp; 編 】
    FILE *fp;
if( (fp = fopen("ms0:/ほえほえ.dat", "w")) == NULL)
{
fclose(fp); // ファイル・オープンでエラーなら、開いたファイルを閉じて…
return FILE_OPEN_ERROR; // エラー数値でリターン
}

int i;
for(i=0; i<1024; i++) // 1024回ループ
{
putc('a', fp); // 半角文字 a を一文字 書き込みする
} // つまり、1024個の a の書き込みになります
fclose(fp); // ファイルを閉じます
return NORMAL_FINISH; // 正常終了の数値でリターン


【 プログラム・コード その2 int fp; 編 】

int fp;
if( (fp = sceIoOpen("ms0:/ダヨーーン.dat", PSP_O_CREAT|PSP_O_WRONLY|PSP_O_TRUNC, 0777)) < NULL)
{
sceIoClose(fp); // ファイル・オープンでエラーなら、開いたファイルを閉じて…
return FILE_OPEN_ERROR; // エラー数値でリターン
}
ptr = GetDATA(); // 架空の、データ取得関数(仮)
sceIoWrite(fp, ptr, サイズ ); // ptrは、書き込むデータの先頭アドレス
// サイズはint型の整数数値です
sceIoClose(fp); // ファイルを閉じます
return NORMAL_FINISH; // 正常終了の数値でリターン


上記のプログラム・コードは、あくまで例です。採用する際は、各自、理想のプログラム・コードに書き換えて下さい。

ファイルを閉じる関数は、読み込み後も書き込み後も共に同じで、fclose( ); 、sceIoClose( ); のどちらかで可能です。使い分けて下さい。


次は、「ファイル入出力関数についての講釈」 です。


関連記事
スポンサーサイト

[edit]

CM: 6
TB: 0

page top

この記事に対するコメント

ついにここまできましたね!
毎日更新楽しみにしています。

solve #- | URL | 2009/10/07 17:38 * edit *

YAH!

> ついにここまできましたね!
> 毎日更新楽しみにしています。

いつも応援してくれる、解決ちゃんのお陰でっすwww

猫山猫宗 #- | URL | 2009/10/07 18:33 * edit *

sceIoOpenの場合エラーは負数です、0ではありません。

名無しさん #- | URL | 2009/10/08 07:21 * edit *

そうでした。

>sceIoOpenの場合エラーは負数です、0ではありません。

確かにそうです。
コピペしてたので、うっかりミスだったりwww

猫山猫宗 #XqdwbOcU | URL | 2009/10/08 23:30 * edit *

負数でエラーコードが帰ってきてるのであって-1ではないです。
試せばわかると思いますが、ファイルが無い場合-2147418110が、無効な引数をわたしてやると-2147418090が返ってきます。

名無しさん #- | URL | 2009/10/09 12:57 * edit *

しまった。

> 負数でエラーコードが帰ってきてるのであって-1ではないです。
> 試せばわかると思いますが、ファイルが無い場合-2147418110が、無効な引数をわたしてやると-2147418090が返ってきます。

はい、負の数であって、値は定かではないのですよね。

訂正しなくてはっ! イソイソイソ・・・。

猫山猫宗 #- | URL | 2009/10/09 14:52 * edit *

page top

コメントの投稿

Secret

page top

トラックバック

トラックバックURL
→http://nekoyama2gillien.blog36.fc2.com/tb.php/157-1c11e7db
この記事にトラックバックする(FC2ブログユーザー)

page top


h o m e |


 

2017-04