文字列の長さを求めるときは strlen を使います。
【 strlen の形式 】strlen( char *s ) 文字列sの長さを調べて返す 文字列の終端'\0'は長さに含まれない 漢字などの全角文字の場合は、ひと文字で2と数えられる例えばこんな文字配列があるとき
char sw1[] = "Cake"; char sw2[] = "クッキー";文字列長と配列サイズを調べるには
printf( "%d\n", strlen( sw1 ) ); printf( "%d\n", strlen( sw2 ) ); printf( "%d\n", sizeof sw1 ); printf( "%d\n", sizeof sw2 );sizeof は、前回のTips で使いましたね。
(参考) sizeof の利用
文字列の場合 strlen を利用する機会が多そうですが、sizeof はたとえば次のような場面でよく使われます。
文字配列のサイズを超えないように入力するために、最大で読み込むサイズに sizeof(buf) を指定しています。
#include <stdio.h>
main()
{
char buf[256];
printf( "文字列を入力してください\n" );
if( fgets( buf, sizeof(buf), stdin ) != NULL )
printf( buf );
}
(今回のクイズです)
下は、sizeof と strlen で求めた結果を比較するプログラムです。
#include <stdio.h> #include <string.h> main() { char buf1[] = "Hello"; char buf2[24] = "Hello"; printf( "buf1:サイズ %d, 文字列長 %d\n", sizeof buf1, strlen(buf1) ); printf( "buf2:サイズ %d, 文字列長 %d\n", sizeof buf2, strlen(buf2) ); }実行すると、結果はどうなるでしょう。予想してください。
(答えは、次回のC言語の Tips で ・・・)
#define NARTIST ((sizeof guests)/(sizeof(struct artist_st)))構造体配列 guests のサイズをひとつ分の構造体サイズで割って、guests配列の要素数を調べます。