ファイルのサイズを求めるプログラムで実行結果が0と表示されて、
うまくサイズが表示されない。
data_tel.txt は以下のとおりです。
naka 080-7777
kiyoko 090-9999
satou 090-3214
kinosita 080-8679
yamada 090-4325
宜しくお願い致します。
コード #include <stdio.h> #define CAN_CUST_FPOS_TO_LONG 0 #define filename "data_tel.txt" //文字列filenameを文字列"data_tel.txt"に変換します。 #if CAN_CUST_FPOS_TO_LONG unsigend long getFileSize1(const char *filename) { fpos_t fsize; FILE *fp = fopen(fileName, "rb"); fseek(fp, 0, SEEK_END); // fseek関数はファイルポインタの位置を指定した位置に // 移動させることができる関数です。 fgetpos(fp, &fsize); // ファイルの末尾まで移動させた状態で、ファイルポインタ位置を // 取得するということは、 // そのファイルのファイルサイズそのものを表すことになります。 printf("現在のファイルポインタの位置は「%d」です。\n",fsize); fclose(fp); return (unsigend long) fsize; } #endif /* #ifdef 文 まず、最も良く使われるものが #ifdef 文である。これは以下の ように使う。 #define DEBUG ... #ifdef DEBUG cout << "Debug: hensuu = " << hensuu << endl; #endif つまり、DEBUG というマクロが定義されていたならば、 #ifdef と #endif の間の行が有効になりますが、 もし最初の行の#define DEBUG がなければ、この #ifdef と #endif で 囲まれた行はないものとして プリプロセッサに処理され、 結果として cout 文はコンパイラ から見ると元から無かったようになります。 */ int main(int argc, char *argv[]) { #if CAN_CUST_FPOS_TO_LONG unsigned long size1 = getFileSize1(filename); #else unsigned long size1 = 0; #endif printf("%ld\n", size1); return 0; } /* 実行結果 naka@naka ~/kadai $ gcc -o getFileSize1 getFileSize1.c -Wall naka@naka ~/kadai $ getFileSize1 0 naka@naka ~/kadai $
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/22 10:33