Поскольку вы возвращаете значение char
, что означает только первый символ строки, на которую указывает указатель p
. Вы должны вернуть char *
из вашей функции.
Ваша функция должна иметь прототип:
char* ParseCmd(char *buf,int len);
^^^^^
Демонстрационная версия :
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
char* ParseCmd(char *buf,int len)
{
char *p;
p = strtok(buf," ");
char *ptr = (char *)malloc(strlen(p)+1);
strncpy(ptr,p,strlen(p));
return ptr;
}
int main()
{
char array[]="fsa rew qwe";
char* ret = ParseCmd(array,11);
printf("[%s]",ret);
/*If You Forget this,You cause a Memory Leak*/
free(ret);
return 0;
}
Выход:
[fsa]
Отказ от ответственности: Я на самом деле не использовал C++
в коде, потому что поскольку вы используете strtok
и char *
вместо string
, я считаю, что Q больше C
, чем C++
.