C言語での文字型配列の初期化とクリア
宣言した文字型配列に、なんか文字列を代入しました。
char twitter_id[] = "yu_suke1994";
で、この配列を初期化してまた別の文字列を代入したい時って、どうしてました?
C言語初めて2ヶ月までの僕
「えーっと、ヌル文字でクリアすればいいんだから……」
char twitter_id[] = "yu_suke1994"; int id_length = strlen( twitter_id ); //forループで要素ごとにヌル文字を代入 for( int i = 0; i < id_length; i++ ) { twitter_id[i] = '\0'; }
これって……なんだか見た目がバカっぽいし、もっと簡単に書けそう。
最近までの僕
「ヌル文字って、文字列の末尾を示すんでしょ?だったら……」
char twitter_id[] = "yu_suke1994"; //配列の先頭要素にヌル文字を代入 twitter_id[0] = '\0';
よくわからない危なっかしさが漂う書き方。
このように書くのが一般的?
char twitter_id[] = "yu_suke1994"; int id_length = strlen( twitter_id ); //memset関数を使用 memset( twitter_id , '\0' , id_length );
memset関数とは
memsetとは、
http://ja.wikipedia.org/wiki/Memset(文字列操作関数群)で定義されているC言語の関数である。
指定されたポインタが指すオブジェクトの先頭から、指定された文字数分に、指定したデータを書き込むはたらきをする。
引数の指定は、
memset( /*文字型配列の先頭アドレス*/ , /*代入したい文字*/ , /*文字型配列の長さ*/ );
と、こんなふうになっております。
これからはこの関数を使っていこうかと思います。
※ヌル文字とか言っときながら改行を代入してたのを修正
※文法上の誤りを訂正。MAY君ありがとう。僕のC言語力が露呈しますね^^^^^^^^^^^^^^^^^^;