基本的に、空白が発生するたびに、ユーザー入力を char 配列 (ソース) の配列に連結しようとしています。つまり、sourceHold に「happy birthday to you」が含まれている場合、sources の配列の内容は、「happy」(0 の場合)、「birthday」(1 の場合)、「to」(2 の場合)、「you」(2 の場合) になります。 3)。sourcesTag は、char 配列の配列の現在のインデックスを保持します。ループを終了するとエラーが発生し続けます (コードは、ループを完全に終了する前に常に中断します。最後の「LOOP EXIT」印刷行は印刷されません。何が間違っているかをテストするためにそこに配置されました。ループが終了しない理由はありますか? imこれは、入力文字列全体がトークン化されたときに while ステートメントが適切に終了しないためだと推測していますが、適切なステートメントは何でしょうか?
while(sourceHold != NULL)
{
if(sourceHold[0] == '\n')
break;
printf("%s \n", sourceHold);
strcpy(sources[sourcesTag], strtok(sourceHold, " "));
sourcesTag++;
strcpy( sourceHold, strtok(NULL, "\n"));
}
printf("LOOP EXIT");