memsetでのnullクリア – プログラミング – Home

通知
すべてクリア

memsetでのnullクリア


ゆうぞう
 ゆうぞう
(@ゆうぞう)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

まったくの初心者でc言語もほとんどわからないので教えて下さい。
1.memset(buf,0,sizeof(buf))
2.memset(buf,'0',sizeof(buf))
1はNULLクリアしていて、2は 0をセットしているとかんがえていいんでしょうか?


引用解決済
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

数の0か 文字の'0'か の違いです。


返信引用
ゆうぞう
 ゆうぞう
(@ゆうぞう)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

ということは
1は数字の0をセットしているだけであって、NULLクリアしているというわけでは
ないんですよね。
では、NULLクリアする場合は、
3.memset(buf,0x00,sizeof(buf))
または
4.memset(buf,NULL,sizeof(buf))
でいいんでしょうか?


返信引用
真雪
 真雪
(@真雪)
ゲスト
結合: 22年前
投稿: 1
 

stdio.hを見てみると以下のようになっていました。
NULLとは何かを考えると答えは出ると思います。

/* Define NULL pointer value */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

同義になりますが、
charデータとしてnullをセットするということを明示するために、
'\0'と表記する習慣があります。

memset(buf, '\0', sizeof(buf));


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました