○区切り文字による文字列の切り出し
■strtokによる文字列切り出し------------------------------------------------------
注意 strtokは、先頭に区切り文字が無いとエラーが出ますので追加します。
#include <stdio.h>
#include <string.h>
int main(){
//strtokは、先頭に区切り文字が無いとエラーが出ますので追加します。
char*str="aa,bb,cc,dd,ee,ff";
char strPos[128];
strPos[0]=',';
strcpy(strPos+1,str);
//この時点でstrPosの内容は",aa,bb,cc,dd,ee,ff"になります
char*r;
r=strtok(strPos,",");//一文字目を切り出します。
printf("%s\n",r);
while(r=strtok(NULL,",")){//次の文字を切り出します。無ければNULLを返します。
printf("%s\n",r);
}
return 0;
}
▼出力結果
aa
bb
cc
dd
ee
ff
■ライブラリを使わずに行う-------------------------------------------------
#include <stdio.h>
int main(int argc, char* argv[])
{
char str[256]=",,,a,b,c,d,今日は,晴天,,,";
const int Maxlen=sizeof(str);
int c=0,valcount=0;
char val[Maxlen][Maxlen];
{for(int i=0;i<Maxlen;i++)val[i][0]='\0';}//配列を初期化
while(str[c]!='\0'){
int cc=0;
while(str[c]!='\0' && str[c]!=','){
val[valcount][cc++]=str[c++];
}
val[valcount][cc++]='\0';
c++;
valcount++;
}
printf("%s\n",val[0]);//0〜Maxlenまでの値
printf("%s\n",val[1]);
printf("%s\n",val[2]);
printf("%s\n",val[3]);
printf("%s\n",val[4]);
printf("%s\n",val[5]);
printf("%s\n",val[6]);
printf("%s\n",val[7]);
printf("%s\n",val[8]);
printf("%s\n",val[9]);
printf("%s\n",val[10]);
printf("%s\n",val[11]);
printf("%s\n",val[12]);
return 0;
}
▼出力結果
a
b
c
d
今日は
晴天
▲トップページ
>
Windows と C++