[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 19:03 / Filesize : 146 KB / Number-of Response : 644
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 132



599 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:17:17 ]
この書き方が文法的に正しいかも移植性が高いのかもともにはっきりしない。ただし、かなり幅広く使われている。この技法による実装は以下のようになる。

#include <stdlib.h>
#include <stdio.h>

struct name *makename(char *newname)
{
  struct name *ret
    =malloc(sizeof(struct name)-1 + strlen(newname)+1);
      /* -1 は頭の [1] 用; +1 は \0 用 */
  if(ret!=NULL){
    ret->namelen = strlen(newname);
    strcpy(ret->namestr, newname);
  }

  return ret;
}

上の関数は、name 構造体の実体を、引数で要求された名前を保持できるように(構造体の定義から想像する1文字ではなく)大きさを調整して割り付ける。
幅広く使われているけれど、この技はいささか悪名高い。……

以上、CFAQ初版より抜粋






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<146KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef