我尝试编写一个函数,该函数获取指向字符数组的指针,从用户读取字符串并删除字符串开头的所有空格,直到出现第一个不是字符串的字符。最后返回开头不带空格的字符串副本。
例如,
对于输入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
有什么建议吗?
最佳答案
strtok
完全按预期工作。它将输入分解为字符串 123
和 456
。
strtok (tempRead, " "); /* Returns 123 */
strtok (NULL, " "); /* Returns 456 */
我认为你可以使用更简单的解决方案:
int i = 0;
char tempRead[30];
...
while (tempRead[i] == ' ' && tempRead[i])
i++;
strcpy(str,tempRead+i);
关于c - strtok 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14030492/