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

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

我写了这样一个程序,让他计算你输入了多少个字母,但是不管我输入字母还是数字,它都会把字符的个数计算进去,这是为什么呢?
我的本意是想让它计算你输入的字母而忽略别的字符.
麻烦各位大虾帮忙解答一下,我是穷人,没分.
展开
 我来答
wchyumo2011
推荐于2017-09-15 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2733万
展开全部

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
化身智慧
2009-05-25 · TA获得超过237个赞
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:97.7万
展开全部
下面是改好的程序,你仔细看一下:
#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总是++;结果当然就会不对了。你是判断条件错了啊。稍微改一下就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dd93720
推荐于2017-10-14 · TA获得超过1205个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:226万
展开全部
你的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总是++;结果当然就会不对了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幽迪
2009-05-25 · TA获得超过631个赞
知道小有建树答主
回答量:537
采纳率:0%
帮助的人:418万
展开全部
改成这样吧:
#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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
通信阮盼晴
2019-09-15 · TA获得超过3986个赞
知道大有可为答主
回答量:3153
采纳率:31%
帮助的人:195万
展开全部
你的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总是++;结果当然就会不对了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式