- 締切済み
【C言語】引数にファイルパスを送りたい
DLLで外部のファイルサイズを得る関数を作っています。 C言語は書きながら覚えていこうとしているのですが、 どうしても分からない点がありました。 ソースをここに正しく書ける自信がないので日本語を含めて大体で書きます。 いろいろなサイトのコピペです。 double __stdcall filesize(){ HANDLE hFile; DWORD size; hFile = CreateFile( _T(絶対パス, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); size = GetFileSize( hFile, NULL ); CloseHandle( hFile ); return(size); } このような感じで書いていて最後にretuenでファイルサイズを正しく得ることができました。 この絶対パスは環境によって変わるので引数にしようと考えました。 そしてfilesize()の中にどのように記述すればいいかで躓いています。 filesize(絶対パス){ char pass[] = "絶対パス"; hFile = CreateFile( _T(pass, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); こんな感じで書ければいいのですがC言語はポインタや文字列の扱いが難しいですね。 初歩的なことで申し訳ありませんがよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- cpu_cooler
- ベストアンサー率0% (0/0)
古いC言語の仕様しか知りませんが、 \は\\と書けばいいはずです。 char systemdir[] = "c:\\windows\\system32"; てな感じで。 それから、 filesize(絶対パス){ char pass[] = "絶対パス"; と言う書き方って、良かったんだったかな? はっきりと覚えていないですが、普通は filesize(char *pass){ hFile = CreateFile( _T(pass, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); でいいと思います。 これだと、文字列(パス名)の先頭アドレスのみfilesize関数に渡ることになります。
- yaha_2007
- ベストアンサー率21% (13/61)
const char *arg とかで文字列ポインタとして渡せば? あと char pass[] = "絶対パス"; ってなにをしようとしてるの? やるなら strcpyとかじゃないの? 関係ないけど GetFileSizeの返り値DWORDなのにdouble型? 仕様見た?MSDN見た? 2byte無駄にする意味がわからない 対処療法じゃなくて基本からやり直したほうがいいと思いますぅ
お礼
const char *arg でできました。 ありがとうございます。
お礼
ポインタにまだ慣れていなくて良く理解できていません。 基礎を固めます。回答ありがとうございます。