○区切り文字による文字列の切り出し

■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++