gpt4 book ai didi

c - strtok 未按预期工作

转载 作者:行者123 更新时间:2023-11-30 21:32:53 27 4
gpt4 key购买 nike

我尝试编写一个函数,该函数获取指向字符数组的指针,从用户读取字符串并删除字符串开头的所有空格,直到出现第一个不是字符串的字符。最后返回开头不带空格的字符串副本。

例如,

对于输入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 完全按预期工作。它将输入分解为字符串 123456

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com