自学嵌入式DAY8:字符数组

一、字符数组的定义和引用

方法如前面所述(数据类型  数组名【数组元素个数】),字符数组时将所有的数据类型定义为字符型

 char s[100];

字符串 :eg;    “adt1236428\0”   默认在后加\0,ASCIIA码为0,作用:结束标志,表示该字符串到此结束                   字符串常量不可修改

字符数组:存储字符串并且可以通过程序编写对字符串的内容进行修改

字符数组初始化

char s[100] = “Hello”;

可以将s理解为容器,而该容器的容积为100,初始化值应该小于s的容积

char s[3] = "hello";         // 会造成数组的越界访问

遍历字符数组

 int main(void)                                                  
{
   char s[100] = "Hello";
   int i = 0;
 
   while(s[i] != '\0')
   {
      putchar(s[i]);
      ++i;
   }  

   return 0;
 }  
                                                                  
             

puts(  ) 函数:(字符串输出)         // int puts(const  char  *s)

可将上述代码改为 :  puts(s);       (puts函数结尾自动换行)

注意区分

0  :数字0,int型,4个字节

‘0’ :字符0,char型,1个字节

‘\0’ :字符串的结束标志,空字符,1个字节,ASCII码值为0

“0” :字符串,2个字节

“ ” : 空字符串,1个字节(‘\0’)

gets(  ) 函数:   (字符串输入)

gets(s);                          //dangerous(不检测越界)

fgets( )函数:     (输入)

fgets(s , sizeof(s) , stdin);          //stdin:标准输入设备 (检测越界,会收录\n)

scanf( )函数:      (输入)

scanf("%s" , s);               //s此时已经为数组s首个元素地址,不用&(不收录\n,不检测越界)

缺点:scanf会自动认为空格、tab和回车键是两个数据中间的分隔符,不会将空格当成有效字符输入

1.计算字符串长度         strlen函数

注意:区分sizeof 和 strlen

sizeof : 数组的总容量

strlen : 数组中存储的有效容量(若已知字符串需要存储但不知字符串长度,需要定义长度至少为strlen + 1的数组来存储该字符串,若不及该长度则会引起数组的越界访问)

2.字符串的拷贝         strcpy函数

注意:①需要调用#include<string.h>

           ②strcpy 函数使用时strcpy(目的,源);

           ③目的数组内存应该足够大,长度至少应该为strlens1[ ]+1;

3.字符串的连接         strcat函数

注意:需要调用#include<string.h>

           ②strcpy 函数使用时strcpy(目的,源);

           ③目的数组内存应该足够大,长度至少应该为strlens1[ ]+strlens2[ ]+1;

4.字符串的比较          strcmp函数(int型)

strcmp(s1,s2);    括号内为数组的地址,其数据类型也为int型

若比较值等于0.则两字符串相同;  若比较值大于0,则前者字符串较大  ;反之小于0时字符串更小

该函数为两字符串对应字符两两比较,若相同为字符相同,则应向后位依次进行比较

5.求极值问题

对于字符串进行比较时不能使用关系运算符,只能使用strcmp函数

对字符数组进行赋值时不能使用赋值运算符,只能使用strcpy函数

eg:

练习:字符串逆序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值