【发布时间】:2012-12-25 12:04:10
【问题描述】:
我尝试编写一个函数,该函数获取一个指向 char 数组的指针,从用户那里读取一个字符串并删除字符串开头的所有空格,直到第一个不是字符串的字符出现。最后返回开头没有空格的字符串副本。
例如,
对于输入abcd,函数应该返回指向字符串abcd的指针。
对于输入123 123,函数应该返回指向字符串123 123的指针。
功能如下图,
void read_RemoveSpace(char * str)/**read the rest of string**/
{
char tempRead[30];
fgets(tempRead,30,stdin);
char *ptr = strtok(tempRead, " "); /**remove spaces between command and other data**/
strcpy(str,ptr); /**copy the new string without the spaces.**/
}
但由于某些原因,函数 strtok() 没有按预期工作。
输入时:
123 456
该函数只返回没有空格的第一部分,而不是字符串的其余部分,即它指向
123
有什么建议吗?
【问题讨论】:
-
您面临的问题是什么?您是如何调用函数的?调用后 str 中究竟存储了什么?
-
strtok_r()确实按预期工作,也许只是您的期望不正确......