strtokでの空文字への置き換え
大したことじゃないと言えばそうかもしれませんが、ちょっと氣になるんで質問させてください。
C言語でstrtokという函數ありますよね。
第1引數の文字列を、第2引數の文字列を構成する文字で區切る。
第2引數の文字を見つけたら、それを空文字('¥0')に置き換える。
字句の最初の文字へのポインタを返す。
このようなものだと理解しています。
次のプログラムを實行してみました。
#include <stdio.h>
#include <string.h>
int main(void)
{
char string[]="XYZ1231ABC";
int i;
printf("%s\n", string);
putchar('\n');
printf("%s\n", strtok(string, "1A"));
printf("%s\n", strtok(NULL, "1A"));
printf("%s\n", strtok(NULL, "1A"));
printf("%s\n", strtok(NULL, "1A"));
putchar('\n');
for(i=0; i<=10; i++)
printf("string[%d]=%c\n", i, string[i]);
return 0;
}
結果
XYZ1231ABC
XYZ
23
BC
(null)
string[0]=X
string[1]=Y
string[2]=Z
string[3]=
string[4]=2
string[5]=3
string[6]=
string[7]=A
string[8]=B
string[9]=C
string[10]=
私が思うには、string[7]は空文字に置き換わってしまうはずだと思うんですが、
結果は'A'のままです。
ここが '¥0'に置き換わるかどうかは しょり系によって異なるのでしょうか。