c语言测字符串长度
‘壹’ c语言怎么计算字符长度
#include
<stdio.h>
#include
<ctype.h>
#define
N
50
int
main()
{
int
chr=0,space=0,dig=0,other=0;
char
string[N];
char
*s;
printf("Please
input
the
string:
");
gets(string);
s=string;
while(*s!='\0')
{
if(isalpha(*s))
chr++;
else
if(isspace(*s))
space++;
else
if(isdigit(*s))
dig++;
else
other++;
s++;
}
printf("Result:\n");
printf("English
chars:
%d\n",chr);
printf("Space:
%d\n",space);
printf("Digit:
%d\n",dig);
printf("Others:
%d\n",other);
return
0;
}
用<ctype.h>会更加简单明了一些,注意要用gets输入字符串才可以包含空格,用scanf则不可以
‘贰’ C语言求字符串长度的问题
你的代码出现问题的原因是scanf("%s",&a);
,a是一个char类型的变量,系统为它分配了一个字节的内存空间,但是你却输入了一个字符串到以a的地址为首地址的一段连续的内存空间里,这样就出现了越界错误.但是printf函数并不检查越界错误,它会按正常的方法执行,然后程序统计出长度,打印出来结果.但是返回到调用main函数的操作系统后,系统会发现越界错误,所以在结果显示出来后才出错.至于你说的输入5个以下不会出错,也许是偶然,也许跟你的编译器有关.我用VS2005测试,只要输入就会出错。
如果你是只想求出输入的字符串的长度而不要求保存输入的字符串,下面的代码更好。你的标准输入缓冲区有多大,那么它就可以求出多长的字符串的长度,不会有越界。
#include<stdio.h>
int
main()
{
int
len=0;
//getchar()函数从标准输入设备(即键盘)接收一个字符,返回该字符的ASCII码.因为回车被输入时被转换成换行符(LF,ASCII码为10),所以getchar()返回10时就知道输入结束了.
while(getchar()!=10)
len++;
printf("It's
length
is
%d.\n",len);
return
0;
}
‘叁’ C语言判断字符串的长度
char
array[]="094387fdhgkdladhladaskdh";字符串定义要加引号
这样才会在串的最后加上'\0'
printf("\n");
这也要加引号
‘肆’ c语言计算字符串的长度(用指针)
#include<cstdio>
int main()
{
char s[20];
char*p;
printf("please input a string(less than 20 character): ");
//scanf("%s",s);不能读入空格
gets(s);
p=s;
while(*p!='