如你对其他C语言知识感兴趣,请考虑阅读我的专栏:
C语言学习【专栏】
须知
本文仅作学习笔记使用,仅在CSDN网站发布,如果在其他网站发现,均为侵权行为,请举报。作者:小王在努力。 参考资料:小甲鱼-带你学c带你飞
字符串处理函数
1.字符串
- 用字符常量来表示字符串:“DanDan”
- 注意:字符常量结尾也有一个\0
printf("DanDan的长度为:%d", sizeof("DanDan"));
![在这里插入图片描述](https://img-blog.csdnimg.cn/7c7c024dc2454e82917dddd19030e934.png)
- 用字符数组来表示字符串:char stl[10] = “DanDan”;
- 注意:在用字符数组表示字符串的时候需要在后面加上表示字符串结束的\0,在单个字符赋值的时候要记得加上,在一次性赋值字符串的时候系统会自动在结尾加上\0
char str1[] = { "DanDan" };
char str2[] = { 'D','a','n','D','a','n','\0' };
char str3[] = "DanDan";
printf("str1的长度为:%d\n", sizeof(str1));
printf("str2的长度为:%d\n", sizeof(str2));
printf("str3的长度为:%d", sizeof(str3));
![在这里插入图片描述](https://img-blog.csdnimg.cn/d967a4c0aa2540b0a2130e0fc85659ae.png)
2.字符串处理函数
- 使用库函数的原因:对于程序员来说,库是最重要的工具之一,可以避免重新造轮子
1.strlen函数
- strlen函数:获取字符串的长度。区别于sizeof,strlen求的是length,sizeof求的是length+1
char s[] = "DanDan";
printf("sizeof DanDan = %d\n", sizeof(s));
printf("strlen DanDan = %d", strlen(s));
![在这里插入图片描述](https://img-blog.csdnimg.cn/b3daeec931304d3eb62567e337f1103a.png)
2.strcpy和strncpy
char str1[] = "Original String";
char str2[] = "New String";
char str3[100];
strcpy(str1, str2);
strcpy(str3, "DanDan");
printf("str1:%s\n", str1);
printf("str2:%s\n", str2);
printf("str3:%s\n", str3);
![在这里插入图片描述](https://img-blog.csdnimg.cn/47086eea972c43209dfa34d79a7bcf4e.png)
- 注意:此函数要求前面接受的字符串长度要大于后面被复制字符串的长度。在此个案例中,字符串拷贝函数将New String\0全部给拷贝过来了,所以接受的字符串也变小了。
- strncpy函数:限制性字符串拷贝函数
char str2[] = "To be or not to be";
char str1[100];
strncpy(str1, str2, 5);
str1[5] = '\0';
printf("str1:%s", str1);
![在这里插入图片描述](https://img-blog.csdnimg.cn/717a0875304c4d22a98128bcb55067b6.png)
3.连接字符串
- strcat函数:将一个字符串连接到另一个字符串的结尾
char str1[100] = "DanDan";
char str2[] = " is my name";
strcat(str1, str2);
printf("str: %s", str1);
![在这里插入图片描述](https://img-blog.csdnimg.cn/5c88818d0ec64de4bbed75df4cade45e.png)
4.比较字符串
- strcmp函数:以此比较每个字母的ASCII值,前面大的返回1
char str1[] = "DanDan";
char str2[] = "DanDander";
int c = strcmp(str1, str2);
printf("str: %d", c);
![在这里插入图片描述](https://img-blog.csdnimg.cn/7ecea8a55a5a4c33b16056e271d10c65.png)
二维数组
1.定义
- 类型 数组名[常量表达式][常量表达式]
- 注意越界问题
2.二维数组的初始化
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
int a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
int a[3][4] = { {1},{5},{9} };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/92a3d70e0833442bba853d86b103d0ff.png)
- 如果希望将二维数组初始化为0,仅需在大括号内写一个0即可
int a[3][4] = { 0 };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/4bfe2ba1c1e74f8dafdcc4b3693a9ad1.png)
int a[3][4];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/b07a77d49e8f4c3d8dfa81e4161aea18.png)
int a[3][4] = {[0][0] = 1, [1][1] = 2, [2][2] = 3};
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/b4724e990002413c9ade130c1336e554.png)
int a[][4] = {[0][0] = 1, [1][1] = 2, [2][2] = 3};
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/b81b603b973340b790aee56a84acadad.png)
|