通知
すべてクリア
Topic starter
2003年4月16日 1:49 PM
まったくの初心者でc言語もほとんどわからないので教えて下さい。
1.memset(buf,0,sizeof(buf))
2.memset(buf,'0',sizeof(buf))
1はNULLクリアしていて、2は 0をセットしているとかんがえていいんでしょうか?
2003年4月16日 1:55 PM
数の0か 文字の'0'か の違いです。
Topic starter
2003年4月16日 2:20 PM
ということは
1は数字の0をセットしているだけであって、NULLクリアしているというわけでは
ないんですよね。
では、NULLクリアする場合は、
3.memset(buf,0x00,sizeof(buf))
または
4.memset(buf,NULL,sizeof(buf))
でいいんでしょうか?
2003年4月16日 2:29 PM
stdio.hを見てみると以下のようになっていました。
NULLとは何かを考えると答えは出ると思います。
/* Define NULL pointer value */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
2003年4月16日 2:57 PM
同義になりますが、
charデータとしてnullをセットするということを明示するために、
'\0'と表記する習慣があります。
memset(buf, '\0', sizeof(buf));