楽しみのために、ユーザーが入力した文字列 (または場合によってはテキスト ドキュメント) を取得し、文字列内の単語をスクランブルするプログラムを作成しています。
strtok
関数を使用して、文字列内の各単語を分離しようとしています。現時点では、私の現在の実装strtok
がずさんなように感じます:
int main(int argc, char *argv[])
{
char *string, *word;
if(!(string = getstr())) //function I wrote to retrieve a string
{
fputs("Error.\n", stderr);
exit(1);
}
char array[strlen(string) + 1]; //declare an array sized to the length of the string
strcpy(array, string); //copy the string into the array
free(string);
if(word = strtok(array, " "))
{
//later I'll just write each word into a matrix, not important right now.
while(word = strtok(NULL, " "))
{
//later I'll just write each word into a matrix, not important right now.
}
}
return 0;
}
strtok
プログラムの途中で配列を宣言せずに実装するよりクリーンな方法が必要だと思います。それは私には正しく感じられません。strtok
これについて正しい方法を使用していますか?私はすべてを動的にしたいので、固定サイズの配列を使用したくありません。そのため、使用するstrtok
ことが正しい方法であると疑い始めています。