【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 132
■ このスレッドは過去ログ倉庫に格納されています
0599デフォルトの名無しさん
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初版より抜粋
■ このスレッドは過去ログ倉庫に格納されています