嵌字符串处理函数、二维数组

一、一维字符型数组

数据类型   数组名[数组长度];

(1)从数组角度:一维字符型数组是用来放字符串的

 char s[20] = {'a','b','c','d'};  //未初始化的部分为0

(2)从字符串的角度:

char s[20] = {"hello"}; //{}也可以省略,实际占用空间包含了 '\0' 。

注意:

①字符串是被当作字符数组来处理的。(连续性、有序性、单一性)
②字符串有一个专门的结束标志 '\0'。
③如果处理的是字符串,操作的时候,往往以 结束标志 为 操作依据 。
④如果处理的是数组,操作的时候,往往以 数组长度 作为操作依据 。
⑤字符数组可以用来存储字符串,而字符串在内存中存储的方式也是以字符数组形式存储的 。

1.puts函数

int  puts(const char *s);

(1)功能:  输出一个字符串 

(2)参数:  s  -----表示字符串为指针类型 ,字符数组名为s

(3)返回值:          成功---非负数 
                               失败---  -1 
    注意:puts输出时自动会加换行。

2. gets 函数

char  *gets(char *s);

(1)功能:   从键盘获得一个字符串 

(2)参数:  s  -----代表就是一块存储空间,需要的是一个一维字符型数组的数组名

(3)返回值:          成功--- s
                               失败---  NULL 

注意:使用gets1函数时很容易越界,且无提示。

3.strlen 函数

字符串长度 -----'\0' 前面的字符个数

size_t   strlen(const char *s);  //头文件 <string.h>

(1)功能:    计算字符串长度 

(2)参数:  s  -----表示需要一个指针,可以给的参数形式有 数组名 或 字符串常量 。

(3)返回值:    返回字符串长度

注意:字符串不能操作,数组不能整体赋值 。

例如:

char s1[10];
gets(s1);
char s2[10];
s2 = s1;(×)

4.strcpy 函数

char * strcpy(char *dest, const char *src);  //头文件 <string.h>

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

(2)参数:  src ------表示原字符串,可以给的实参形式:a.一维字符数组名 b.字符串常量  
                   dest -----表示目的字符串,可以给的实参形式:一维字符数组名

5.strcat 函数

char *strcat(char *dest, const char *src);    //头文件 <string.h>

(1)功能:     拼接字符串 

(2)参数:  src ------表示原字符串,可以给的实参形式:a.一维字符数组名 b.字符串常量  
                   dest -----表示目的字符串,可以给的实参形式:一维字符数组名

6.strcmp 函数

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

(1)功能:     比较字符串大小 

(2)参数: s1 ------字符串,可以给的实参形式:a.一维字符数组名 b.字符串常量  
                   s2 -----字符串,可以给的实参形式:a.一维字符数组名 b.字符串常量  

(3)返回值:最后停的位置上字符的ASCII码的差值来反映大小 
  ①s1 > s2 ------   ret > 0  
  ②s1 == s2 ----- ret = 0   
  ③s1 < s2  ----- ret < 0   

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

二、二维数组

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

  

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

1.数组初始化:

(1)全部初始化 :

eg:  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}};//全部初始化

(2)部分初始化:(未初始化部分为0)

eg:int a[3][4] = {1,2,3,4,5,6};//部分初始化     
       int a[3][4] = {{1,2},{5,6},{9,10}};//部分初始化

(3)赋值: scanf输入值 

2.数组元素的引用:

数组名 [行][列];

 

445e5586f8be4e6c97de1cdf737da960.png

3.二维数组的本质:

int[4] a[3]; // 一维数组 
                 // 这个一维数组的元素 又一个一维数组类型 

                 //int[4] a[3]; --------c语言不支持这样写 
 int a[3][4]; //二维数组     

注意:
①在c语言中,并不存在真正的二维数组,都是用一维数组模拟的。
②二维数组的本质上是 一维数组类型的一维数组。------数组的数组        
③二维数组数据存储时,按行优先存储 。

4.多维数组 

(1)eg:
       int a[3][4][5]; //三维数组 --- 是二维数组类型的一维数组 
        int[4][5] a[3] //n维数组 --- n-1维数组类型的 一维数组 

(2)用途:处理一些图片数据;存放多行数据等。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值