我正在尝试使用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;
}
答案 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;
}