嵌入式学习第八天:字符串操作、二维数组

字符串操作

字符串函数头文件<string.h>

对字符串进行操作可以自己写代码实现或者调用string库函数

获取字符串长度

区分数组的长度和字符串的长度

char s[]="hello";//s的长度——数组的长度:6

char s[10]="hello";//s的长度——数组的长度:10

'h' 'e' 'l' 'l' 'o' '\0'

字符串长度:'\0'前面字符个数。"hello"字符串长度:5,所占内存空间的字节数: 6

int i = 0;
while(s[i]!='\0')
    ++i;//i的值就是s的长度

strlen

size_t strlen(const char *s);

功能:计算字符串长度

参数:s表示需要一个指针。

可以给的参数类型:数组名、字符串常量

返回值:字符串长度

字符串复制

while(s1[i]!='\0')
{
    s2[i] = s1[i];
    i++;

}

strcpy

char *strcpy(char *dest,const char *src)

功能:复制字符串(将src中字符串,复制到dest)

参数:源字符串src——可以给的实参:一维字符数组名、字符串常量

        目的字符串dest——可以给的实参:一维字符数组名

字符串拼接

	while(s1[i]!='\0')
	{
		i++;
	}

	while(s2[k]!='\0')
	{
		s1[i]=s2[k];
		i++;
		k++;
	}

strcat

char *strcat(char *dest, const char *src);
   功能:拼接字符串 
   参数:源字符串src——可以给的实参:一维字符数组名、字符串常量

            目的字符串dest——可以给的实参:一维字符数组名

字符串比较

	int i=0,j=0;

	while(!(s1[i]!=s2[j]||s1[i]=='\0'||s2[j]=='\0'))
	{
		i++;
		j++;
	}

	if(s1[i]==s2[j])
	{
		printf("s1=s2\n");
	}
	else if(s1[i]>s2[j])
	{
		printf("s1>s2\n");
	}
	else
	{
		printf("s1<s2\n");
	}
	printf("strcmp(s1,s2)=%d\n",strcmp(s1,s2));

strcmp

int strcmp(const char *s1, const char *s2);
 功能:比较字符串大小 
 参数:s1——字符串     s2 ——字符串 
             可以给的实参:数组名 、字符串常量 
     
返回值: 最后 停的位置上字符的差值 来反映大小 
  s1 > s2  :>0  1 
  s1 == s2 :0 
  s1 < s2  : <0  -1

二维数组

二维数组用途:处理一些图片 

数组定义

二维数组:
   类型说明符 数组名[常量表达式][常量表达式]
     (1)       (2)     (3)        (4)

     (1) 类型说明符 ——用来说明数组中存储数据的类型
     (2) 数组名 ——标识符 
     (3) 常量表达式 —— 行 :多少行
     (4) 常量表达式——列 :多少列
 eg:
   int a[3][4];

表示定义了一个包含有3行 4列 总共12个 int型元素的二维数组 

数组初始化

int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//全部初始化 				
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};//全部初始化 			   
int a[3][4] = {1,2,3,4,5,6};//部分初始化 	
int a[3][4] = {{1,2},{5,6},{9,10}};//全部初始化

数组赋值

循环、scanf输入值

数组元素的引用

数组名[行][列];

  • 注意:
  • c语言中,并不存在真正的二维数组,都是用一维数组模拟的
  • 二维数组的本质:实际上是 一维数组类型的一维数组 (数组的数组)        
  • 二维数组数据存储时,按行优先存储 
  • 多维数组:n维数组——n-1维数组类型的 一维数组 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值