题目:写一个函数,求一个字符串的长度,在 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计算实际字符串长度,不包括结尾的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(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