c++ strtok不能得到2个token Borland

C++ strtok cant get 2 token Borland

本文关键字:2个 token Borland strtok 不能 c++      更新时间:2023-10-16
char *ParseCmdX(char *buf,int len)  
{  
 char *p;  
 p = strtok(buf," ,");  
 p = strtok(NULL," ,");  
 char *ptr = (char *)malloc(strlen(p)+1);  
 strcpy(ptr,p);  
 return ptr;  
}

为什么我在p = strtok(NULL," ,");获得访问违反错误?当我输入NULL参数时,它会中断…

你是如何调用这个函数的,它是如何分配的?记住,但是不能是只读的或const (strtok在调用时改变输入缓冲区)。

这个可以工作,因为x是可更改的:

  char x[] = "das sdg hfg jgh";
  char *c = ParseCmdX(x, strlen(x));

但是,seg错误:

   char *y = "das sdg hfg jgh";
   char *c = ParseCmdX(y, strlen(y));

您必须检查并查看是否第一次调用strtok,即strtok(但是,",")返回NULL或否,如果是,则下一次调用strtok将死亡。你要传递给ParseCmdX的具体内容是什么?