C言語memset()関数の使用

1264 ワード

関数のプロトタイプ:
/*string.h*/
/* Set N bytes of S to C.  */
extern void *memset (void *__s, int __c, size_t __n) __THROW __nonnull ((1));
すなわち、void*memset(void*s,int ch,unsigned n)
役割:sが指すあるブロックのメモリの中の各バイトの内容をすべてchが指定したASCII値に設定し、ブロックの大きさは3番目のパラメータによって指定され、この関数は通常、新しい申請のメモリの初期化作業を行い、その戻り値はSを指すポインタである.
 
例1:
#include <stdio.h> 
#include <malloc.h> 
#include <string.h> 
int main(int argc, const char *argv[]) 
{ 
    char * my_str = (char *)malloc (100);  
    char msg_buf[1024]; 
     
    memset (my_str, 'a',10 ); 
    memset (msg_buf,0,1024 );     //0->NULL 
     
    printf ("%s
",my_str); free (my_str); return 0 ; }

コンパイル実行:
aaaaaaaaaa

例2:
//memset          、    
#include <stdio.h> 
#include <string.h> 
struct my_struct 
{ 
    int x;  
    char s[ 10]; 
}; 
int main(int argc, const char *argv[]) 
{ 
    struct my_struct ms; 
    struct my_struct MS[10]; 
    //  ms 
    ms .x = 0 ; 
    ms .s[ 0] = '\0' ; 
    //memset  ms 
    memset (&ms, 0,sizeof(struct my_struct )); 
    //memset  MS 
    memset (MS, 0,sizeof(struct my_struct )*10);  
 
    return 0 ; 
}