タグ

これは微妙とCに関するiwwのブックマーク (4)

  • ファイルサイズの取得方法 - 苦しんで覚えるC言語

    C言語にはファイルサイズを知るための関数はありません。 ファイルサイズを知るには、ファイルを開いてからファイルポインタを移動して求めます。 fpos_t GetFileSize(const char* FileName[]) { fpos_t fsize = 0; FILE* fp = fopen(FileName, "rb"); /* ファイルサイズを調査 */ fseek(fp, 0, SEEK_END); fgetpos(fp, &fsize); fclose(fp); return fsize; } fpos_t はデータのサイズを意味する変数で、実態は符号なしの整数値です。int に変えてもさほど問題はありません。 また、上記の処理で、ファイルポインタ、つまり現在の読み取り位置が変化してしまうので、下記のようにして戻します。

    ファイルサイズの取得方法 - 苦しんで覚えるC言語
    iww
    iww 2019/07/04
    fseek()で求めるとか、こういうことをしているから苦しむのでは
  • itoa - Wikipedia

    itoa (Integer to ASCII) は、整数型の値を文字列に変換するC言語の非標準ライブラリ関数。POSIX標準でもなく、glibc や BSD libc など大半の標準Cライブラリでは利用不可。Microsoft Visual C++では_itoaが用意されている[1]。実装されている場合は標準ヘッダーファイル<stdlib.h>において宣言されていることが多い。 第1引数に与えられたint型の整数値を、第3引数に指定した基数表記でヌル終端文字列に変換し、第2引数に指定したcharへのポインタが指す配列(バッファ)に書き込む。戻り値は、第2引数に渡されたポインタそのものを返す。基数に無効な値が指定されて変換が失敗した場合はNULL(ヌルポインタ)を返す実装もある。 例えば、第1引数に100、第2引数に十分なサイズの文字配列、第3引数に16を指定すると、文字配列は"64"となる

    iww
    iww 2016/07/12
    こんな項目いらねーだろ 削除しろよ
  • GNU コーディング規約: Writing C

    5.1 ソースコードの整形 C言語では, カラム0に関数体の始まりの開き括弧を置くことが大事です. カラム0に関数の始まりでない括弧や, 開き丸括弧, 開き大括弧を書くのは やめましょう. カラム0に開き括弧があると関数の始まりとみなすツールがいくつかあります. そのようにコードが整形されてないとこういったツールはうまく機能しません. 関数定義において, 関数名をカラム0から始めることも大事です. 他の人が関数定義を検索するのに 役立つし, ツールが関数定義を認識するのにも助けになります. つまり, 適切なフォーマットは次のようになります. static char * concat (s1, s2) /* Name starts in column zero here */ char *s1, *s2; { /* Open brace in column zero here */ ..

    iww
    iww 2011/08/24
    この規約には従えない
  • js/scheme/perl/ruby/C - この世で最も役に立たない関数 : 404 Blog Not Found

    2009年06月03日05:00 カテゴリLightweight Languages js/scheme/perl/ruby/C - この世で最も役に立たない関数 素敵! らばQ:「え?なに?なんなの?」この世で最も役に立たないマシンが完成していた(動画) 「最も」とか「一番」と言った最上級の表現は、安易に使うべきではないかもしれません。 ですが、さすがにこれ以上無意味なものも無いのでは、と思ってしまう機械がありました。 これをソフトウェアでやるとどうなるか。 Javascript (@spidermonkey) 簡単に出来た。が、arguments.calleeへの代入はやはり駄目。 #!/usr/bin/js pointless = function(){ print("turning off myself"); // arguments.callee = undefined; poi

    js/scheme/perl/ruby/C - この世で最も役に立たない関数 : 404 Blog Not Found
    iww
    iww 2011/01/21
    Cのやつは動かない。*point=NULL;の時点で落ちる。意図しているだろう場所(2回目の関数呼び出し)では落ちないっぽい。
  • 1