memset関数の使用分析
1です。void*memset(void*s,int c,size_t n)全体の役割:メモリ空間sがオープンした最初のnバイトの値を値cに設定する。2です。例
#include
void main(){
char *s="Golden Global View";
clrscr();
memset(s,'G',6);
printf("%s",s);
getchar();
return 0;
}
。memset()関数はメモリ空間初期化によく使われます。
char str[100];
memset(str,0,100);
。memset()の深い内包:メモリ空間の一部をすべて特定の文字に設定するために使用され、定義された文字列を‘’または‘0’に初期化するのが一般的である。例:char a[100]memset(a、'/0'、sizeof(a);memcpyはメモリコピーとして使用されています。データの種類のオブジェクトをコピーして、コピーデータの長さを指定できます。例:char a[100],b[50]memcpy(b,a,sizeof(b)注意sizeof(a)を使うと、bのメモリアドレスがオーバーフローします。strcpyは文字列をコピーするしかないです。'0'に会ったらコピーを終わります。例:char a[100],b[50]strcpy(a,b)strcpy(b,a)を使う場合、aの文字列長(最初の‘0’まで)が50ビットを超えるかどうか、超えたらbのメモリアドレスがオーバーフローします。5.補足:ワンポイントの心得memsetは、構造タイプの変数や配列を空にするのに便利です。
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
変数struct sample_stcut stTest一般的には、クリアストTestの方法:
stTest.csName[0]='/0';
stTest.iSeq=0;
stTest.iType=0;
はmemsetを使うととても便利です。memset(&stTest、0、sizeof(stuct sample_)struct);配列:struct sample_struct TEST[10];ならmemset(TEST,0,sizof(struct sample_)struct.*10)6です。strcpy原型:extern char*strcpy(char*dest、char*src);使用法:#i_nclude機能:srcでいうNULLで終わる文字列をdestで指す配列にコピーします。説明:srcとdestが指すメモリ領域は重複できず、かつdestはsrcの文字列を格納するために十分な空間が必要である。destを指すポインタを返します。memcpy原型:extern void*memcpy(void*dest、void*src、unsigned int count);使用法:#i nclude機能:srcで指すメモリ領域からcountバイトをdestで指すメモリ領域にコピーします。説明:srcとdestが指すメモリ領域は重複しません。関数はdestを指すポインタに戻ります。memsetプロトタイプ:extern void*memset(void*buffer、int c、int count);使い方:#i_nclude機能:bufferが指すメモリ領域の先頭countバイトを文字cに設定します。説明:ブザーを指すポインタを返します。