探究一下strtok的用法

首先,我们看看man 手册中如何说?

说白了,就是截取指定分割符的字符串,怎么用呢?

我们来看一个我们自己写的一个实现strtok函数的功能的模型:

int strtok(char * buf,int len)
{
  int i = 0;
  char *p;
  char *arg[10];

  fgets(buf,len,stdin);
  buf[strlen(buf) - 1] = '';

  p = buf;
  for(; *p != '';){

  while(*p == ' '){
    p ++;
  }

  arg[ i ++] = p;

  while(*p != ' ' && *p != ''){
  p ++;
  }

  if(*p != ''){
    *p++ = '';
  }
 }

  arg[i] = NULL;

  for(i = 0;arg[i] != NULL;i ++){
  printf("%s ",arg[i]);
 }
  return 0;
}

似乎有点小麻烦,其实这些事情strtok函数已经帮你做了,不信请看更简单的用法:

int main(int argc, const char *argv[])
{
  int i = 0;
  char *p;
  char *arg[10];
  char buf[1024];

  fgets(buf,sizeof(buf),stdin);
  buf[strlen(buf) - 1] = '';

  arg[i] = strtok(buf," ");

  while(arg[++i] = strtok(NULL," "))
   ;

  for(i = 0; arg[i] != NULL;i ++){
    printf("%s ",arg[i]);
       }

  return 0;
}

测试结果如下:

输入:hello world

输出:hello

   world

是不是很简单呢!

原文地址:https://www.cnblogs.com/bwbfight/p/9267617.html