c - 返回指向第一个空白字符 (isspace) 的指针的函数

标签 c function pointers while-loop char

我正在尝试编写一个函数,该函数返回指向字符串 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/

相关文章:

c - 3 个矩阵相乘求和

c - 基于复杂的 Haskell 类型生成 C 结构

c - void 打印数组未按预期工作

javascript - 如何检查传递给 Typescript 中函数的参数?

c# - 你能理解这段 C 指针代码吗?

c - 带指针的结构体数组

javascript - 如何将 JavaScript 回调设置为外部(包装)对象的方法?

c++ - 如何在C++中使函数返回字符串

c - 简单的 C 指针问题

c - 两次将指针转换为 `void*` 怎么会无效?