ispunct()C ++中的函数

时间:2012-04-17 18:58:42

标签: c++

char punct(char a[], int len) {
    for (int i = 0; i < len; i++) {
        if (ispunct(a[i]))
            { return i; }
        return -1;
    }
}

有人能告诉我为什么这个函数只返回-1给我递给它的每个字符串?我正在编写一个程序来从.txt文件中取出单词并将它们(稍加改动)输出到另一个.txt文件中,我需要从字符串中删除标点符号。但是,我似乎无法检测标点符号使用ispunct()函数的位置。我甚至使用我能想象到的所有标点符号来编写自己的函数,它仍然只返回-1。这是函数的问题还是我给它的字符串?如果需要显示更多我的代码,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:7)

这是因为如果ispunct(a[0])返回false,则会调用return -1

您应该将默认回报移到循环之外:

char punct(char a[], int len) {
    for (int i = 0; i < len; i++) {
        if (ispunct(a[i]))
            { return i; }
    }
    return -1;
}

请注意,此函数仅返回第一个标点符号索引,而不是所有索引。我猜你在这个功能之外就是在处理这个案子了。