C语言中测试字符串长度的函数

#include <stdio.h>
main()
{
int a=0;
char c;
printf("请输入一段英文字母:");
while((c=getche()) != '\r')
{
if(c&&('a'<='z'&&'A'<='Z'))
a++;
}
printf("您输入了%d个字符",a);
}

我写了这样一个程序,让他计算你输入了多少个字母,但是不管我输入字母还是数字,它都会把字符的个数计算进去,这是为什么呢?
我的本意是想让它计算你输入的字母而忽略别的字符.
麻烦各位大虾帮忙解答一下,我是穷人,没分.

C语言中测试字符串长度的函数是strlen()

函数原型: 

unsigned int strlen (char *s);

头文件:

#include <string.h>

参数说明:s为指定的字符串;

功能说明:strlen()用来计算指定的字符串s 的长度,不包括结束字符'\0';

返回值:返回字符串s 的字符数;

注意:strlen() 函数计算的是字符串的实际长度,遇到第一个'\0'结束。

示例:

#include<stdio.h>
#include<string.h>
int main()
{
    char str[] = "abcxyz";
    printf("strlen(str)=%d\n", strlen(str1));
    return 0;
}
//输出结果:strlen(str)=6

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-25
下面是改好的程序,你仔细看一下:
#include <stdio.h>
main()
{
int a=0;
char c;
printf("请输入一段英文字母:");
while((c=getche()) != '\r')
{
if(c&&('A'<=c&&c<='z'))
a++;
}
printf("您输入了%d个字符",a);
}

这是因为你的判断条件错了啊!
这里啊if(c&&('a'<='z'&&'A'<='Z'))你把它改成if(c&&('A'<=c&&c<='z'))就行了。因为你这里你是要统计字母的数量。而你输入的即有字母又有数字,这时你就要用if语句判断。当是字母时你才计数。要统计字母只要满足上述条件就行(即if(c&&('A'<=c&&c<='z')))。它表示当c不为空且当c为>='A'且为<='z'时(即c为字母),则i++。即统计它的数量。而你的呢是if(c&&('a'<='z'&&'A'<='Z'))它只要c不为空就可以满足条件了且你的条件c&&('a'<='z'&&'A'<='Z'))后半部分('a'<='z'&&'A'<='Z'))返回值永远都是真,因为a和A永远都比z和Z小呀。前半部分的c是你输入的值,如果不是输入了0对应的ascii码值48,那也永远是真,所以a条件总是成立,a总是++;结果当然就会不对了。你是判断条件错了啊。稍微改一下就行了。
第2个回答  推荐于2017-10-14
你的if中的条件写的有问题,应改为
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
这样说明只有你输入的是字母时,a的值才执行++操作。而你的条件c&&('a'<='z'&&'A'<='Z'))后半部分('a'<='z'&&'A'<='Z'))返回值永远都是真,因为a和A永远都比z和Z小呀。前半部分的c是你输入的值,如果不是输入了0对应的ascii码值48,那也永远是真,所以a条件总是成立,a总是++;结果当然就会不对了本回答被提问者采纳
第3个回答  2009-05-25
改成这样吧:
#include <stdio.h>
int main()
{
int a=0;
char c;
printf("请输入一段英文字母:");
while((c=getche()) != '\r')
{
if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
a++;
}
printf("\n您输入了%d个字符\n",a);
}
第4个回答  2019-09-15
你的if中的条件写的有问题,应改为
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
这样说明只有你输入的是字母时,a的值才执行++操作。而你的条件c&&('a'<='z'&&'A'<='Z'))后半部分('a'<='z'&&'A'<='Z'))返回值永远都是真,因为a和A永远都比z和Z小呀。前半部分的c是你输入的值,如果不是输入了0对应的ascii码值48,那也永远是真,所以a条件总是成立,a总是++;结果当然就会不对了