|
Study C販売のご案内 是非ご利用ください。 |
#include
#include
main(int argc, char *argv[])
{
unsigned char
buff[1000];
LPSTR fname;
if(argc <= 1)
return;
GetFullPathName(argv[1], 1000, buff, &fname);
printf("%s,%s,%s\n", argv[1], buff, fname);
}
このプログラムを何かパス名を指定して実行するとそのフルパス名が表示されます。
たとえば次のような実行結果が得られます。
DOSwindow>test .\test.c
.\test.c,C:\SOURCE\pmaga\test.c,test.c
最後の項目はファイル名だけではなくディレクトリ名も返してくるので余り有用では
ありません。これでフルパス名の取得は問題ないのですが、この方法で得たフルパス名を
そのまま画面に表示するには問題があります。この方法でえられたフルパス名の
大小文字の区別が実際とは異なる場合があります。問題となるのはGetFullPathName()の
最初のパラメータに指定した部分です。ここにディレクトリ名などを指定すると、それと
同じ大小文字として結果が返ってきてしまいます。たとえば次のようになります。
DOSwindow>test ..\PMAGA\TEST.C
.\test.c,C:\SOURCE\PMAGA\TEST.C,TEST.C
実際にはpmagaやtest.cが小文字であっても上の例のように大文字になってしまいます。
大小文字が異なっていてもファイル操作に関して害はありませんが、見た目はよくありません。
これを回避する最良の方法は解りませんが、FindFirstFileを使うと大小が区別されるので
この関数を使ってフルパス名を修正しています。あまりスマートな方法ではないので、
ほかに良い方法をご存知の方はメールで情報をお寄せください。
|
C言語ゲームプログラミング講座のご案内 |