字符串篇
- 一、字符的定义方式及输出
- 二、字符串在内存中的存储方式
- 三、strlen来计算字符串中字符个数
- 四、字符串操作常用函数
- 1.printf和puts函数都是输出字符串,scanf和get函数都是输入字符串,以及初始化函数memset的使用
- 2.拷贝函数strcpy和strncpy,拼接strcat和比较strcmp
- 3.查找子字符strchr和查子串strstr,转为小写的函数strlwr和转为大写的函数strupr
- 4.字符串分割strtok
- 五、自己实现字符串api
- 1.通过函数来自己实现字符串的api,puts输出和gets输入函数:
- 2.自己实现计算长度strlen和初始化memset
- 3.自己实现字符串拷贝strcpy和strncpy,
- 4.自己实现字符串的拼接strcat
一、字符的定义方式及输出
1.什么是字符串?
- 字符串就是字符数组,好多个字符串起来的一组数据。
2.直接看代码,注意自己写的注释
#include<stdio.h>
int main()
{
int i;
char c = 'c';//定义了一个字符数据类型c
//所以,第一种定义字符串数组的方式
char str[3] = {
'a','b','c'};//和整型数组相似
//访问方式
for(i-0;i<sizeof(str) / sizeof(str[0]);i++){
printf("%c ",str[i]);
}
putchar('\n');
//第二种定义字符按串数组的方式
char str2[3] = "abc";//也和整型数组相似
for(i=0;i<sizeof(str2) / sizeof(str2[0]);i++){
printf("%c ",str2[i]);
}
putchar('\n');
//第三种定义字符串的方式
char str3[] = "abc";//数组元素个数不写,会根据真实大小来默认分配
for(i=0;i<sizeof(str3) / sizeof)(str3[0]);i++){
printf("%c ",str3[i]);
}
putchar('\n');
//第四种定义字符串数组的方式
char *pstr = "i am handsome";//指针方式,如果操作不恰当,内存非法,易造成段错误
printf("%s",pstr);//字符串用格式占位符%s表示,不需要用i的下标遍历
putchar('\n');
return 0;
}
3.运行结果:
二、字符串在内存中的存储方式
1.下面用代码类比
#include<stdio.h>
int main()
{
int a[3] = {
1,2,3};//连续的空间,整个数组的大小是:元素的个数*元素类型的大小
printf("a数组的大小是:%ld\n",sizeof(a));
printf("数组元素的大小是:%ld\n",sizeof(a[0]));
printf("数组元素大小是:%ld\n",sizeof(int));
printf("数组的个数可以这么算:%ld\n",sizeof(a)/sizeof(a[0]));
puchar('\n');
char a2[3] = {
'a','b','c'};
printf("a2数组的大小是:%ld\n",sizeof(a2));
printf("数组元素的大小是:%ld\n",sizeof(a2[0]));
printf("数组元素大小是:%ld\n",sizeof(char));
printf("数组的个数可以这么算:%ld\n",sizeof(a2