我正在尝试编写一个程序,该程序计算字符串中的几个元素。其中第一个是字母。
作业是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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句