一个简单的例子,显示了如何在代码中使用多个分隔符和潜在的改进。查看嵌入式注释以获得解释
被警告的strtok()(从手动)一般缺点:
这些功能修改他们的第一个参数。
这些函数不能用于常量字符串。
定界字节的标识丢失。
strtok()函数在解析时使用了一个静态缓冲区,所以它不是线程 安全。如果这对您很重要,请使用strtok_r()。
#include
#include
int main(void)
{
char input[1024];
char *string[256]; // 1) 3 is dangerously small,256 can hold a while;-)
// You may want to dynamically allocate the pointers
// in a general, robust case.
char delimit[]=" \t\r\n\v\f"; // 2) POSIX whitespace characters
int i = 0, j = 0;
if(fgets(input, sizeof input, stdin)) // 3) fgets() returns NULL on error.
// 4) Better practice to use sizeof
// input rather hard-coding size
{
string[i]=strtok(input,delimit); // 5) Make use of i to be explicit
while(string[i]!=NULL)
{
printf("string [%d]=%s\n",i,string[i]);
i++;
string[i]=strtok(NULL,delimit);
}
for (j=0;j
printf("%s", string[i]);
}
return 0;
}