Lazurite 日本語リファレンス


文字列操作関数

 

Print関数

Print関数はC言語でも比較的簡単に文字列を操作できるように拡張した関数です。

関数名 機能
void Print.init(buf,size) バッファを指定されたサイズで初期化します。
int Print.p(string) initで指定されたバッファにstringの文字列を連結します。返り値は、バッファの残量です。
int Print.d(double,len) double型、またはfloat型の数値を小数の文字列に置き換えて、バッファに連結します。小数点の桁数をlenで指定します。返り値は、バッファの残量です。
int Print.l(long, base) 整数を文字列に置き換えて、バッファの文字列に連結します。返り値は、バッファの残量です。
int Print.ln() バッファの最後に改行コードを付与します。返り値は、バッファの残量です。
int Print.len() 使用している文字列のバイト数を返します。
返り値は、バッファの残量です。




良く使用する文字列操作関数


関数名 機能
strnlen(str,size) strで指定したバッファの文字列のサイズを返します。lenにはバッファのサイズを指定してください。
使用例:
char str[128] = "hello";
int size = strnlen(str,sizeof(str));
  --> 5が返ります。
strncat(str1,str2,size) str1にstr2の文字列を連結します。sizeにはコピー元(str2)のバッファサイズを指定してください。
strncmp(str1,str2,size) str1とstr2の文字列を比較し、一致していると0を返します。sizeにはバッファのサイズを指定してください。
strncpy(str1,str2,size) str2をstr1にコピーします。sizeにはコピーする最大の文字数を指定してください。
strtok(str,delimiter) CSV等の文字列を扱うのに便利な関数です。

1回目の呼び出しは次のように行います。
char *ptr1 = strtok(str,",\r\n");
strの中でdelimiterで指定した文字列を検索して、その文字をNULLに置き換えます。上記の場合は、カンマ、CRコード、LFコードをNULLに置き換えて、それまでptrには文字列の先頭が返ります。

2回目の呼び出しは次のように行います。
char *ptr2 = strtok(NULL,",\r\n");
strにNULLをしていすることで、前回の続きからdelimiterの文字が出てくるまでを一つの文字列として取り出すことが出来ます。 
strtol(str,ptr,base) 文字列を数値に置き換えるのに便利な関数です。
long data = strtol(str,NULL,0);
strの文字列をlong型の数値に変換します。
baseは文字列を数値に変換するときの基数を指定します。0にすると、次のように文字列の先頭文字を自動的に認識して基数を決めます。
"0x10" --> 16  (16進数)
"10"   -->  10  (10進数)
"010"  --> 8    (8進数)