我正在尝试编写一个函数,该函数返回指向字符串 s 中指针 p 之后的第一个空白字符的指针,指针 p 指向 s 中的一个字符。如果没有空白字符,它应该返回空字符\0。
现在我遇到的问题是,我对这个问题的解决方案似乎并不奏效。这就是所谓的解决方案:
char * FirstWhiteSpaceAfter(char *p)
{
while(*p != '\0' && isspace(*p))
p++;
return p;
}
当我看到这个时,我看到它会返回第一个不是空格的字符,而不是第一个空格。 p 将转到下一个字符,只要它指向一个空格,所以当 while 循环结束时它不会是一个空格并返回那个字符。
解决方案是错误的还是我看错了?
最佳答案
我觉得你说的对,应该是
char * FirstWhiteSpaceAfter(char *p)
{
while(*p != '\0' && !isspace(*p))
p++;
return p;
}
这是一个活生生的例子:http://ideone.com/k9upnQ不要介意输出代码在 C++ 中,所讨论的函数应该以完全相同的方式在 C 中工作。
关于c - 返回指向第一个空白字符 (isspace) 的指针的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20448024/