C语言学习-Part 04

如你对其他C语言知识感兴趣,请考虑阅读我的专栏:

C语言学习【专栏】

须知

本文仅作学习笔记使用,仅在CSDN网站发布,如果在其他网站发现,均为侵权行为,请举报。作者:小王在努力。
参考资料:小甲鱼-带你学c带你飞


字符串处理函数

1.字符串

  • 用字符常量来表示字符串:“DanDan”
  • 注意:字符常量结尾也有一个\0
	printf("DanDan的长度为:%d", sizeof("DanDan"));

在这里插入图片描述

  • 用字符数组来表示字符串: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));

在这里插入图片描述

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));

在这里插入图片描述

2.strcpy和strncpy

  • strcpy:字符串拷贝函数
	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);

在这里插入图片描述

  • 注意:此函数要求前面接受的字符串长度要大于后面被复制字符串的长度。在此个案例中,字符串拷贝函数将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);

在这里插入图片描述

3.连接字符串

  • strcat函数:将一个字符串连接到另一个字符串的结尾
	char str1[100] = "DanDan";
	char str2[] = " is my name";
	strcat(str1, str2);
	printf("str: %s", str1);

在这里插入图片描述

4.比较字符串

  • strcmp函数:以此比较每个字母的ASCII值,前面大的返回1
	char str1[] = "DanDan";
	char str2[] = "DanDander";
	int c = strcmp(str1, str2);
	printf("str: %d", c);

在这里插入图片描述

二维数组

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");
	}

在这里插入图片描述

  • 如果希望将二维数组初始化为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");
	}

在这里插入图片描述

  • 如果仅定义不初始化,则为默认值
	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");
	}

在这里插入图片描述

  • C99也增加了类似一维数组的指定元素初始化赋值
	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");
	}

在这里插入图片描述

  • 二维数组可以不写一维的数据,让编辑器自己计算
	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");
	}

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值