C语言数组与字符串


C语言数组与字符串

学习笔记

一、数组

一维数组


数组定义

定义的一般形式为
类型说明符 数组名[常量表达式]
注意:C语言不允许对数组的大小做动态定义,即数组定义时[ ]中不允许是变量

一维数组的初始化

(1)定义时对全部元素赋值
全部赋值时可以不指定数组长度,此时数组长度默认与初始化时赋值长度一致

int a[5]={1,2,3,4,5};
int a[]={1,2,3,4,5};//数组长度与上面一致

(2)定义时部分赋值
定义时也可以不赋值
凡是未初始化的数组元素系统默认初始化为0(字符型数组初始化为’\0’,指针型数组初始化为NULL,即空指针)


二维数组

定义

二维数组定义的一般形式为
类型说明符 数组名[常量表达式][常量表达式]

引用

数组名[下标][下标]
(1)下标应是整形表达式如:a[2-1][2*2-1]
(2)下标不可以超过数组的最大范围

二维数组的初始化

(1)将所有数据写在一个花括号内
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};//只可以省略行下表,列下标不可省

(2)分行分括号赋值

int a[3][4]={ {1,2,3},{4,5,6},{7,8,9},{10,11,12} };
int a[][4]={ {1,2,3},{4,5,6},{7,8,9},{10,11,12} ;

(3)对部分元素赋值

int a[3][4]={ {1,3},{4,5},{7,8,9},{ } };
int a[][4]={ {1,3},{4,5},{7,8,9},{ } };//可以省去第一维的长度但是要分行赋值

字符数组

初始化

char c[]={'h','a','p','p','y'};
char c[]={"happy"};
char c[]="happy";

字符串

在C语言中,是将字符串作为字符数组来处理的。而字符串也没有定义相应变量的关键字,所以C语言对于字符串的定义往往是借助字符数组来实现的。C语言规定字符串的结束标志为’\0’。

基本操作

1、定义

char str[]=”hello world”;

2、输入输出

字符串可以通过格式占位符%s输入、输出

char str[];
scanf ("%s",&str);
printf("%S",str);

还可以使用字符串处理函数 puts() gets().

字符串处理函数

输出字符串函数

1. puts(字符数组)


2. 输入字符串函数

gets(字符数组)


3. 字符串连接函数

strcat(字符数组1,字符数组2)
把字符串2连接到字符串1后面,结果放在字符数组1中。


4. 字符串复制函数

strcpy(字符数组1,字符串2)
(1)字符数组应该定义的足够大,以便容纳被复制的字符串2
(2)“字符数组1”必须写成数组名形式(如:str1),“字符串2”可以是字符数组名也可以是一个字符串常量

strncpy(字符数组1,字符串2,n)
将前面n个字符复制到字符数组1中去。


5. 字符串比较函数

strcmp(字符串1,字符串2)
(1)如果全部字符相同,则认为两个字符串相等
(2)如果出现不同的字符,则以第一对不同的字符的比较结果为准。

  • (1)如果字符串1与字符数串2相同,则函数值为0
  • (2)如果字符串1>字符数串2,则函数值为一个正整数
  • (3)如果字符串1<字符数串2,则函数值为一个负整数

6. 测字符串长度的函数

strlen(字符数组)


8. 转换为小写的函数

strlwr(字符串)


7. 转换为大写的函数

strlwr(字符串)



文章作者: 刺客世家
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 刺客世家 !
 上一篇
HEXO 使用填坑 HEXO 使用填坑
HEXO 使用填坑在使用hexo搭建博客之后,我就迫不及待地写起博,想将它充实起来。但是!!!万万没想到的是,刚填完了搭建博客遇到的坑,又被写博客拉了下去。刚写就出现错误 (Ծ‸Ծ) 我还怎么写下去???于是乎这篇博客就诞生啦,主要是记录博
2019-12-19
下一篇 
STM32F10x定时器 ——定时时间的确定 STM32F10x定时器 ——定时时间的确定
STM32定时器STM32F10x系列总共最多有8个定时器,分为三种 三种STM32定时器区别定时器种类|位数|计数器模式|产生DMA请求|捕获/比较通道|互补输出|应用场景——-|——-|——-|——|——-|——-|——-|——-高级定
2019-12-14
  目录