C 练习实例70-求字符串长度

 题目:写一个函数,求一个字符串的长度,在 main 函数中输入字符串,并输出其长度。

 解答:

#include 
int length(char *s);
int main()
{
    int len;
    char str[20];
    printf("请输入字符串:\n");
    scanf("%s",str);
    len=length(str);
    printf("字符串有 %d 个字符。",len);
}
//求字符串长度  
int length(char *s)  
{  
    int i=0;
    while(*s!='\0')
    {  
        i++;   
        s++;  
    }  
    return i;  
}
请输入字符串:
abcd
字符串有 4 个字符。

 

字符串和字符数组

字符串的本质是字符数组,只不过它的后面有 '\0' 这个结尾标志

#include 
int main()
{
	//字符数组
	char a[]={'H','e','l','l','o'};	
	//字符串
	char b[]="Hello";	
	//“He11o”会被编译器变成一个字符数组放在某处,
	//这个数组的长度是6,结尾还有表示结束的0
	
	printf("%d\n",sizeof(a));	//结果为5
	printf("%d\n",sizeof(b));	//结果为6
	
	return 0;
}
5
6

scanf一个单词(到空格、tab或回车为止)

#include 
int main()
{
	char word[8];
	char word2[8];
	scanf("%s",word);
	scanf("%s",word2);
	printf("%s##%s##\n",word,word2);
	return 0;
}

输入:

Hello world!

输出: 

Hello##world!##

输入的字符串长度不能够大于等于数组长度,否者会越界,不安全 

输入:

12345678
12345678

 输出:

##12345678##

正确的安全代码:(在%和s之间加上7表是最多只能读7个字符,其余的不要了)

#include 
int main()
{
	char word[8];
	char word2[8];
	scanf("%7s",word);	//在%和s之间加上7表是最多只能读7个字符,其余的不要了
	scanf("%7s",word2);
	printf("%s##%s##\n",word,word2);
	return 0;
}

输入:

123
12345678

输出:

123##1234567##

strlen的用法 

strlen计算实际字符串长度,不包括结尾的0

sizeof计算实际数组长度,包括结尾的0

#include 
#include 
int main()
{
	char line[]="Hello";
	printf("strlen=%d\n",strlen(line));	//strlen计算实际字符串长度,不包括结尾的0
	printf("sizeof=%d\n",sizeof(line));	//sizeof计算实际数组长度,包括结尾的0
	return 0;
}
strlen=5
sizeof=6

strcmp的用法

strcmp(s1,s2)的结果为0表示相等

#include 
#include 
int main()
{
	char s1[]="abc";
	char s2[]="bbc";
//	strcmp(s1,s2)的结果为0表示相等。
	printf("%d\n",strcmp(s1,s2));
	return 0;
}

 

strcmp(s1,s2)的结果为-1表示s1

#include 
#include 
int main()
{
	char s1[]="abc";
	char s2[]="dbc";
//	strcmp(s1,s2)的结果为-1表示s1
-1
-3

 

strcmp(s1,s2)的结果为1表示s1>s2

#include 
#include 
int main()
{
	char s1[]="dbc";
	char s2[]="abc";
//	strcmp(s1,s2)的结果为1表示s1>s2
	printf("%d\n",strcmp(s1,s2));
	printf("%d\n",'d'-'a');
	return 0;
}
1
3

strcmp(s1,s2)是逐位比较,当比较出第一个单元相等,则开始比较下一个单元。以此类推,直到比较出最终结果

这很像我们的文件夹以名称排序的排序方式

 

#include 	
#include 
int main()
{
	char s1[]="abc";
	char s2[]="abe";
//	strcmp(s1,s2)是逐位比较,当比较出第一个单元相等,则开始比较下一个单元。以此类推,直到比较出最终结果
	printf("%d\n",strcmp(s1,s2));
	printf("%d\n",'c'-'e');
	return 0;
}
-1
-2

你可能感兴趣的:(c语言经典100题,c语言)