strtok関数を自作して、「,」で区切られた文字列を第1引数にとって、関数を呼び出すたびに順番に区切られた部分を文字列として返すようなプログラムを作りたいのですが、strtok自体があまり理解できず関数の自作も難航しています。
strtok関数を自作する上でのアルゴリズムのヒントなどをご教授していただけると幸いです。
ちなみに今回の関数では、第1引数がNULLのときは前回の文字列の探索の続きを行えるように、新しく文字列が与えられたら最初から、切り出しが終了したらNULLを返せるようにする条件が付いています。
可能であればカンマ(区切り文字)が連続した際に返す文字も工夫してください(私の場合はとりあえずNULLにしますが)。
イメージ的にはこんな感じにしたいです(下)
C
1int main(void){ 2 3 char str[]="abc,xyz,012"; //strは自分でmain関数を開き,下のprintf文の関数呼び出しの引数部分に直接書き込んでも良い 4 char str_ans[]; 5 //実行結果(表示形式) 6 printf("%s¥n",myStrtok(str,str_ans)); //abc 7 printf("%s¥n",myStrtok(NULL,str_ans)); //xyz 8 printf("%s¥n",myStrtok(NULL,str_ans)); //012 9 printf("%s¥n",myStrtok(NULL,str_ans)); //NULL 10 11 return 0; 12}

回答7件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。