嵌入式学习第八天——字符串函数与二维数组

字符串函数

使用字符串函数应在开头写上<string.h>头文件

strlen

size_t strlen(const char*s)

功能:计算字符串长度

字符串长度为结束标志'\0'前面的字符个数

参数:s //可以给的参数形式:a.数组名 b.字符串常量

返回值:字符串长度

eg:

#include<stdio.h>
#include<string.h>

int main()
{
    char s[10]="hello"
    int len;
    
    len = strlen(s);
    
    printf("%d",len);
}

strcpy

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

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

参数:src:源字符串        实参形式:a.一维字符型数组名 b.字符串常量

           dest:目的字符串  实参形式:a.一维字符型数组名 b.字符串常量

eg: 

#include<stdio.h>
#include<string.h>

int main()
{
	char s1[20]=,s2[20]="hello";

	strcpy(s1,s2);

	puts(s1);

	return 0;
}

strcat

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

功能:拼接字符串

参数:src:源字符串        实参形式:a.一维字符型数组名 b.字符串常量

           dest:目的字符串  实参形式:a.一维字符型数组名 b.字符串常量

eg:

#include<stdio.h>
#include<string.h>

int main()
{
	char s1[20]="hello",s2[20]="world";
	
	strcat(s1,s2);

	puts(s1);

	return 0;
}

 strcmp

int strcmp(const char*s1,const char*s2)

功能:比较字符串大小

参数:s1:字符串 实参形式:数组名,字符串常量

           s2:字符串 实参形式:数组名,字符串常量

返回值        //用最后停的位置上字符的差值来反映大小 

s1 > s2        //差值>0

s1 = s2        //差值=0

s1 < s2        //差值<0

字符串比较规则

字符串比较的规则与其他语言中的规则相同,即对两个字符串自左至右逐个字符相比(按 ASCII 码值大小比较),直到出现不同的字符或遇到'\0' 为止。如全部字符相同,则认为相等;若出现不相同的字符,则以第1个不相同的字符的比较结果为准。 

比较的结束的条件:
s1[i]!=s2[i] || s1[i]=='\0' || s2[i] == '\0'

只看结束时s1 最后一个字符 和 s2最后一个字符 之间的大小关系

二维数组

二维数组:
   类型说明符 数组名[常量表达式][常量表达式]
     (1)       (2)     (3)        (4)
     (1) 类型说明符 --- 用来说明数组中存储数据的类型 //
     (2) 数组名     --- 标识符 
     (3) 常量表达式 --- 行 --多少行
     (4) 常量表达式 --- 列 --多少列 

数组初始化:
  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输入值 

数组元素的引用:
  数组名 [行][列];

数组输入输出示例

#include<stdio.h>

int main()
{
	int n;
	scanf("%d",&n);
	int a[n][n];
	int i,j;

	for(i = 0;i < n;i++)    //输入
	{
		for(j = 0;j < n;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}

	for(i = 0;i < n;i++)    //输出
	{
		for(j = 0;j < n;j++)
		{
			printf("%2d ",a[i][j]);
		}
		printf("\n");
	}
	
	return 0;
}


注意:
    1.c语言中,并不存在真正的二维数组,都是用一维数组模拟的。
    2.二维数组的本质
      实际上 一维数组类型的一维数组 
     //数组的数组        
    3.二维数组数据存储时,
      按行优先存储 
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值