只是为了好玩,我正在编写一个程序,它将接受用户输入的字符串(甚至可能是文本文档)并打乱字符串中的单词。
我正在尝试使用该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
是正确的方法。