• ベストアンサー

ファイルサイズを得る関数

utf7の回答

  • utf7
  • ベストアンサー率29% (11/37)
回答No.1

C言語だとすると、sys/stat.hに定義されているstat構造体のst_sizeで取得することが出来ます。取得に仕方としては、 struct stat buf; stat("x.bin", &buf); /* ファイルはフルパスで記入 */ printf("ファイルサイズは%dです。\n", (int)buf.st_size); となります。

keyguy
質問者

補足

あいがとうございます STL系ではないのでしょうか? 今は仕方なくAPIを使っていて以下のようにしています unsigned Size; HANDLE hFile; hFile=CreateFile("x.bin",0,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); Size=GetFileSize(hFile,NULL); CloseHandle(hFile);

関連するQ&A

  • バイナリファイルのサイズを変えたい

    こんにちは。 ここに書いて良い話題かわかりませんが、宜しくお願いします。 中途半端な大きさのバイナリファイルをきりのいいサイズに変更したいとき、便利な方法やツールはありませんか? 例えば、 aaa.bin のサイズが 0x1F34 だったときに、 0x2000 にしたい・・・ときなどです。 それでは宜しくお願いします。

  • ファイルサイズ

    ファイルのサイズを取得する方法を探しています。 自分でも関数を調べたのですが該当するのが見つけられませんでした。 使用目的はログファイルのサイズがどの程度なのか調べるためです。 logs/log.txt があったとして、ファイルサイズがいくつなのか知る方法を教えてください。

    • ベストアンサー
    • Perl
  • ファイルサイズ指定し、ファイルを作成する。

    こんばんは、 プログラミングの初心者です。 現在、c++でファイルサイズを指定して、ファイルを作成するプログラムを作っているのですが、どうすれば、サイズを指定してファイルを作れるのでしょうか?関数とかあれば、教えてください。 ファイル内容はかまないが、ファイルサイズが1MBです。 以上、よろしくお願いいたします。

  • 640x480のファイルサイズ

    640x480で撮影した画像って、ファイルサイズはどれくらいになりますか?

  • 文字のサイズを測る関数

    PHPで文字のサイズを計る(bit)関数はないでしょうか? sizeof や countなどではArrayのサイズしか計れないので、 別の関数を探しています。宜しくお願いします。

    • ベストアンサー
    • PHP
  • windowsのバッチファイルについてファイルサイズが読めません(fo

    windowsのバッチファイルについてファイルサイズが読めません(for構文) はじめまして。バッチファイル作成にあたりわからなかったことがありまして 私自身調べたのですが、初心者のためよく分りませんでした。 どなたかおわかりになる方、お力を貸していただけないでしょうか。 パソコンのOSはXPです。 大学院修士の研究で、以下のようなバッチファイルを考えています。 そして、forのところでInputPart.csvというファイルがあるのですが 実行してみたところ、どうやらそのファイルサイズが読めてないようなんです… if %%~zi lss 5000 という部分の値を5000から0に変更すると下の0125.exeやSimHeat.exe -99831 -cの実行プログラムが稼働するので、構文としては合っているのではと思っているのですが… ちなみにInputPart.csvの容量は4kBくらいです。 どのようにすれば、ファイルサイズが反映されるようになるでしょうか。 それとも、やはりどこか構文がおかしいのでしょうか。 すみません。お力を貸してください。 よろしくお願いします。 この下にバッチファイルの中身を示します。 @echo cd C:\1003\bin 0420.exe for /r [C:\1003\bin] %%i in (C:\1003\bin\InputPart.csv) do if %%~zi lss 5000 goto end SimHeat.exe -99831 -c 0125.exe :end

  • ファイルサイズの取得について

    2つのテキストファイルのサイズを取得し、そのファイルサイズ分だけを動的にメモリを確保しようとしています。 int *c,*a;と宣言し、 fp=fopen("./data/Problem.txt","r");//1つ目のファイル fseek(fp, 0, SEEK_END); /* ファイルの終端までシーク */ size = ftell(fp); /* 終端の位置、すなわちファイルサイズを得る */ fseek(fp, 0, SEEK_SET); /* ファイルの先頭に戻る */ c = (int *)malloc(size); /* ファイルサイズ分メモリ確保 */ while((x=fgetc(fp))!=EOF){ c[i]=x; i++; } c[i]='\0'; i=0; fclose(fp); fpa=fopen("./data/Answer.txt","r");//2つ目のファイル fseek(fpa, 0, SEEK_END); size = ftell(fpa); fseek(fpa, 0, SEEK_SET); a = (int *)malloc(size); while((x=fgetc(fpa))!=EOF){ a[n]=x; n++; } a[n]='\0';//・・・・(1) n=0; fclose(fpa); とすると1つ目のファイルの方だけはうまくいくのですが、(1)の部分で 「sample.exeの0x00411dcでハンドルされていない例外が発生しました:0xc0000005:場所0x0000000に書き込み中にアクセス違反が発生しました。。」 というエラーが出ます。 また、 int *c,*a;を int *c,a[300]; のように片方を配列として宣言し、 //a = (int *)malloc(size); /* ファイルサイズ分メモリ確保 */ のようにコメントアウトすると上記のエラーは出ずにcにメモリは確保されているようです。 これは何故なのでしょうか? また、どうすればaとcでメモリを確保出来るようになるのでしょうか? よろしくお願いいたします。

  • Ç言語でファイルサイズを変更するプログラム

    Ç言語初心者です。visualstudio2010を使用しています。 ファイルサイズ100MBのtest.binをバイナリモードで開き、10GBになるまで0を追加するプログラムを組みたいと思います。 ファイルを読み込んで出力するようには組めたのですが、この手法だとファイルサイズが大きいと時間がかかってしまいます。 現在のソースは以下の様になっているのですが、どうしたらもっと早く終わらせることが出来るでしょうか? また、int型でファイルサイズを取得していますが、ファイルサイズがもっと大きくなったときにint型では足りなくなってしまうのもどうすればいいのか困っています。 ※元ファイルサイズ(test.bin)は例としています。今後?GBサイズになると思います。変更後のファイルサイズは今後10GBくらいまでで考えています。 #include <stdio.h> #include <string.h> #include "stdafx.h" #define KIRO (1024) #define MEGA (KIRO*1024) #define GIGA (MEGA*1024) #define SIZE (100) int main(void) { FILE *fp,*fpw; unsigned char c; unsigned char zero = 0; int i = 0; int filesize; // 元ファイルをバイナリモードで開く fp = fopen( "test.bin", "rb" ); if( fp == NULL ) { printf( "test.binが開けません" ); return 1; } fseek( fp, 0, SEEK_END ); filesize = ftell( fp ); fseek( fp, 0, SEEK_SET ); // 書込み先をバイナリモードで開く fpw = fopen( "test_W.bin", "wb" ); if( fp == NULL ) { printf( "test_W.binが開けません" ); return 1; } while(1) { i++; // 指定サイズになったら終了 if(i > MEGA * SIZE) break; // ファイルサイズまで読み書き if(filesize < i){ // 残りを0で代入 fwrite(&zero, sizeof(unsigned char), 1, fpw); /* 1文字ずつ書き込み */ }else{ // ファイルの内容を1文字ずつ読み書き fread( &c, sizeof(unsigned char), 1, fp ); /* 1文字ずつ読み込み */ fwrite(&c, sizeof(unsigned char), 1, fpw); /* 1文字ずつ書き込み */ } printf( "%d番目\n", i ); } printf( "\n" ); fclose(fp); fclose(fpw); return 0; }

  • TrueCryptのファイルサイズ

    macos x 10,5で、TrueCrypt5を使用し、ファイルを作成しようとしますが、作成途中、かならず、too largeというダイアログがでてファイルが 作成できません。マニュアルを見る限りファイルサイズの上限はないようなのですが、、。ちなみに外付けHDに使う為120Gのサイズのものを作成したいです。アドバイスお願いします

    • 締切済み
    • Mac
  • RAWでのファイルサイズについて

    初の質問です。不手際があるかもしれませんが宜しくお願いいたします。 デジタル一眼の購入を検討しておりましたところ、スペック を見ていたら首題のようにファイルサイズに疑問を感じまし たので解説をお願いいたします。 下記のリンクはEOS5Dの主要性能です。 http://cweb.canon.jp/camera/eosd/5d/system.html ここで、 ・画像タイプ:RAW(12bit) ・ファイルサイズ:RAW:約12.9MB(4,368x2,912画素) とあります。 画像タイプはRBG各色12bitという意味だと思います。 また、RAWは非圧縮でBMPと同じ物と思ってます。 そうすると、ファイルサイズは・・・   4,368x2,912x12x3=457.9Mbit → 57.2MByte となると思うのですが上記には12.9MBとあります。 質問:誤認識・間違いはありますか? わかる方、宜しくお願いいたします。