我无法让我的代码正确地计算字符串中的字母数,我的代码仍在计算空格,即使我在下面调用的函数仅检查字母字符仍在计算空格。如果我输入“ Hello World”,即使只有10个字母也算11个字母
isalpha() 检查字母字符;在标准“ C”语言环境中,它等效于(isupper(c)|| islower(c))。在某些语言环境中,可能还存在isalpha()为true的其他字符-既不大写也不小写的字母。
在这里输入我的代码
#include <stdio.h>
#include <math.h>
#include <cs50.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
//gets user input
string input = get_string("Text: ");
//counter for the number of letters
int numLetters = 0;
//looks at each character in the string
for(int i = 0, n = strlen(input); i < n; i++)
{
//checks to see if the characeter is in the alphabet
if(input[isalpha(i)])
{
//add to the number of letters in the string
numLetters++;
}
}
printf("letter(s) %i", numLetters);
printf("\n");
}
答案 0 :(得分:4)
循环中的以下if语句:
if(input[isalpha(i)])
将使用isalpha(i)
的结果作为input
数组的索引,并评估其值。
相反,您可能希望评估以字符串中第i个字符(即
isalpha()
的结果
if(isalpha(input[i]))
答案 1 :(得分:0)
错误在于您的if语句中,即循环中的一个。应该是:
if (isalpha(input[i]) != 0)
{
numLetters++;
}
我添加了
!= 0
part的原因是'isalpha'如果是字母字符,则返回正整数,如果不是,则返回零。希望您觉得这有用。