掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.7786

fopenのモード指定子について
投稿者---wiz(2007/08/03 17:09:48)


お世話になります。
現在、テキストファイルに様々なプロセスから
文字列を書き込むライブラリを前任者のプログラムを
参考に作成しているのですが、1点気になることがあるので
質問します。

ビルド環境:VC2003
実行環境:Win Longhorn B3

上記の環境で、fopen関数がerron=22
「デバイスがコマンドを認識できません」
というエラーで失敗してることがわかりました、
そこで、そのコードを見ると

fp=fopen( FilePath, "ar+" );

とありました、aは書き込み専用+追加書き込み、
r+は読み込みと書き込みというモードであるはずなので、
矛盾があるのではないかと考えました。
この様な指定の場合の動作について、
可能なのか、または間違っているという明確な資料などが
あれば教えていただきたいと思っています。
よろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:fopenのモード指定子について 7787 たかぎ 2007/08/03 17:38:50


No.7787

Re:fopenのモード指定子について
投稿者---たかぎ(2007/08/03 17:38:50)
http://www.kijineko.co.jp/


>fp=fopen( FilePath, "ar+" );
>
>とありました、aは書き込み専用+追加書き込み、
>r+は読み込みと書き込みというモードであるはずなので、
>矛盾があるのではないかと考えました。

はい、矛盾しています。

>この様な指定の場合の動作について、
>可能なのか、または間違っているという明確な資料などが
>あれば教えていただきたいと思っています。

「明確な」ということであれば、規格書を読むのが一番です。
fopenの第2引数に、規定されていない値を指定した場合の動作は未定義であることが明記されています。
ちなみに、Visual C++ 2005で "ar+" を使って試してみると、異常終了してしまいます。

Microsoftの独自拡張に関しては下記を参照
http://msdn2.microsoft.com/ja-jp/library/yeby3zcb.aspx



この投稿にコメントする

削除パスワード

No.7788

Re:fopenのモード指定子について(解決)
投稿者---wiz(2007/08/03 18:17:08)


返信ありがとうございます。

>「明確な」ということであれば、規格書を読むのが一番です。
>fopenの第2引数に、規定されていない値を指定した場合の動作は未定義であることが明記されています。
規定されているモードの中に以下のモードがあることを確認しました。
# r, w, a, rb, wb, ab, r+, w+, a+, r+b, rb+, w+b, wb+, a+b, ab+
機能が重複するものもあるようですがar+は存在しませんでした。。。

>ちなみに、Visual C++ 2005で "ar+" を使って試してみると、異常終了してしまいます。
>
>Microsoftの独自拡張に関しては下記を参照
情報ありがとうございます。
扱う文字コードまで指定できるようになっているのは、
知りませんでした。

今回の現象については、ar+と指定しているところを
a+と指定することで期待した動作を得ることが出来ました。
ありがとうございました。




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ