CStdioFileでファイル作成時のエラーハンドリング – プログラミング – Home

CStdioFileでファイル作成時の...
 
通知
すべてクリア

[解決済] CStdioFileでファイル作成時のエラーハンドリング


AC
 AC
(@AC)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

.NET C++ を使用しています。

はじめましてC++を始めて1週間の初心者なのですが、
現在下記のようなコードで、次々とファイルを作成していく
モジュールを作成しています。

BOOL b = OutFile.Open( ルートパス\ + ファイル名, CFile::modeCreate |
CFile::modeReadWrite);

if (b == FALSE){
//エラー
}

通常は問題なく動作するのですが、ファイル名の先頭が「/AAA」など
先頭が「/」の場合にファイルは作成されないのにもかかわらず
エラーとして認識されないようなのです。

これはコードに問題があるのでしょうか?

もし事前にチェックが必要でしたら、
「/」以外にも特殊なものがあるのでしょうか?

よろしくお願いいたします。


引用未解決
トピックタグ
KING・王
 KING・王
(@KING・王)
ゲスト
結合: 20年前
投稿: 122
 

> もし事前にチェックが必要でしたら、
> 「/」以外にも特殊なものがあるのでしょうか?

とりあえず、適当なファイルを用意します。
そして、エクスプローラー上からそのファイルのファイル名の先頭が'/'で始まるように、
名前の変更を試みてください。
OSがどのような文字は使用してはダメか、エラーを出してくれます。

あと、CONとかAUXなんかもやばかったと思いますが。。。


返信引用
fackt
 fackt
(@fackt)
ゲスト
結合: 21年前
投稿: 8
 

Win32APIでは'/'を'\'と同じに扱っていたと思います。


返信引用
AC
 AC
(@AC)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

早々のご返答ありがとうござます。

> とりあえず、適当なファイルを用意します。
> そして、エクスプローラー上からそのファイルのファイル名の先頭が'/'で始まるように、
> 名前の変更を試みてください。
> OSがどのような文字は使用してはダメか、エラーを出してくれます。

あ、ファイルやフォルダの作成に使用できない文字はわかっています。
ファイル名が「AA/AA」や「:AAA」などの時にはもちろんエラーがでます。
先頭が「/」の場合のみエラーとしてでないのが不思議だったのです。

> Win32APIでは'/'を'\'と同じに扱っていたと思います。

なるほど。しかし、
考え方が間違っているのかも知れませんが、
D:\\TEST\\\\AAA
を作成しようとすると、TESTフォルダ直下にAAAというファイルができました。

ん~良くわかりませんが、事前に先頭の「/」はチェックすることにします。
ありがとうございました。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

連続する \ は1個につなげるという妙な機能もあるのです。

(参考)
http://www.ipa.go.jp/security/awareness/vendor/programming/b08_01.html


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

「/AAA」の正確なパスを調べてみてはどうでしょうか。
MFCなら CFile::GetFilePath?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました