我正在尝试编写一个程序来计算字符串中的多个元素。第一个是字母。
作业是 CS50 第 2 周问题集的一部分,因此包含库。
使用 while
条件我能够计算每个字符,但是一旦我添加了 isalnum
(检查字符是否为字母数字),代码就停止工作了.
我做错了什么?
#include <cs50.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void) {
string text = get_string("Text: ");
printf("%s, \n", text);
int letters = 0;
while (text[letters] != '\0') {
if (isalnum(text[letters])) {
letters++;
}
}
printf("%i \n", letters);
}
最佳答案
这里显示了如何定义正确的循环
size_t letters = 0;
for ( size_t i = 0; text[i] !='\0'; i++ )
{
if ( isalnum( ( unsigned char )text[i] ) )
{
letters++;
}
}
printf( "%zu\n", letters );
如果你想使用一个while循环,那么它可以看起来像
size_t letters = 0;
size_t i = 0;
while ( text[i] !='\0' )
{
if ( isalnum( ( unsigned char )text[i++] ) )
{
letters++;
}
}
printf( "%zu\n", letters );
注意函数isalnum
检测字母和数字。如果您只需要计算字母,请使用函数 isalpha
。
关于c - 如何只计算字符串中的字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61666703/