使用strcmp将c字符串与char进行比较

时间:2016-09-15 21:40:33

标签: c string c-strings strcmp

我正在尝试使用c字符串计算空格。我不能使用std字符串。在比较两个字符的行上,我得到错误'从'char'到'const char *'的无效转换。

我明白我需要比较两个const chars *但我不确定哪一个是哪个。我相信句子[]是char和char空间[]是const char *是吗?我需要使用某种类型的转换来转换第二种,但我不理解我猜的语法。感谢您的帮助< 3

int wordCount(char sentence[])
{
    int tally = 0;
    char space[2] = " ";

    for(int i = 0; i > 256; i++)
    {
        if (strcmp(sentence[i], space) == 0)
        {
            tally++
        }
    }

    return tally;
}

3 个答案:

答案 0 :(得分:3)

如果你真的想要计算空格字符,我认为以下方法会更好,因为它会检查char数组的结束位置。字符串终止符(\ 0)表示char数组的结尾。我不知道为什么你硬编码256。

int countSpaceCharacters(char* sentence)
{
    int count = 0;
    int i = 0;

    while (sentence[i] != '\0')
    {
        if (sentence[i] == ' ')
        {
            count++;
        }
        i++;
    }

    return count;
}

但是,如果您想从原始方法名称中查看单词,则需要考虑更好的方法。因为这种算法在非完美情况下会失败,例如连续的空格字符或标点符号周围没有空格字符等。

答案 1 :(得分:0)

我可以建议:

for(int i = 0; i < 256; i++) {
    if (isspace(sentence[i])) // or sentence[i] == ' '
    {
        tally++
    }
}

您现在要做的是将char(sentence[i])与不能正常工作的c-string(space)进行比较。

请注意,您的实现不会像

这样的句子那样做
"a big   space     be    in here."

所以你需要考虑如何为多个空间做些什么。

答案 2 :(得分:0)

strcmp用于比较两个字符串,而不是单个字符和一个字符串。

没有函数:strcmp(char c,char *); //如果这是不合逻辑的!

如果要在字符串中搜索单个字符,只需使用迭代将此字符与所有元素进行比较:

iint wordCount(char* sentence)
{
    int tally = 0;
    char space[2] = " ";

    for(int i = 0; i < strlen(sentence); i++)
    {
        if (sentence[i] == space[0])
        {
            tally++;
        }
    }

    return tally;
}