一维字符型数组及字符串函数

一位字符型数组:

  定义:数组类型 数组名[数组长度]。

char s[10];

从字符数组角度看,字符存放方式为:s[10]= {'a','b','c'};

从字符串角度看:s[10] = {'hello"};大括号可要可不要;

字符串数组的特点:

1.字符串是当作字符数组来处理的。

2.字符串有一个专门的结束标志'\0'。

3.处理的是字符串,操作的时候往往以结束的标志作为操作依据。

4.处理的是数组,操作的时候往往以数组长度作为操作依据。

5.字符数组可以用来存储字符串。

字符串在内存中的存储方式为字符数组形式:

如:"hello"={'h','e','l','l','o','\0'};

而a[10] = {'h','e','l','l','o'};也相当于字符串,因为系统会自动补充符号'0,即相当于\0'。

而a[5]= {'h','e','l','l','o'};是字符数组,而不是字符串,因为没有额外的内存空间给系统补充'\0'。

而""也是字符串,是空字符串。

字符串相关函数:

puts

puts函数的声明:int puts(const char *str)

功能:输出一个字符串

参数:s:表示字符串,可以传入字符数组名,也可传入字符串常量。

且它输出字符串后会自动换行。

返回值:成功返回一个非负数,失败返回EOF;

gets

功能:从键盘获取一个字符串。

 gets函数的声明:char* gets(char *str)

参数:s:代表需要一个存储空间,可以传入一个一维字符数组名。

返回值:成功返回数组名,失败返回NULL。

字符串函数

使用前应加头文件<string.h>

strlen

strlen函数声明:size_t  strlen(const char *s)

计算字符串长度函数

功能:计算字符串长度

参数s:表示需要一个指针:可以传入数组名,也可传入字符串常量。

返回值:返回字符串长度。

strcpy

strcpy函数声明:char *strcpy(char *dest,const char *src)

字符串复制函数

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

参数:src:表示原字符串,可以给到实参形式有:1.一维数组名 2.字符串常量

 strcpy(s1,s2);
 strcpy(s1,"hello");

下面代码相当于strcpy的功能

   #include <stdio.h>                                                                                                                                                   
   
   int main()
   {
       char s1[10] = {0};
       char s2[10] = {0};
       gets(s1);
       
        int i = 0;
      while(s1[i] != '\0')
      {
          s2[i] = s1[i];
      }
  
      puts(s1);
      puts(s2);
  
      return 0;
  }

dest:表示目的字符串;可以给到的实参形式为:一位字符数组名。

此代码等同于strcmp实现的功能

strcmp

strcmp函数声明:int strcmp(const char *s1,const char *s2)

字符串比较函数:

功能:比较两个字符串的大小。

传入参数:两个都可以是一维数组名或字符串常量

strcmp(s1,s2)

下面代码相当于strcmp的功能

  1 #include<stdio.h>
  2 
  3 int main()
  4 {
  5     char s1[100] = {0};
  6     char s2[100] = {0};
  7     int i = 0;
  8     int j = 0;
  9 
 10     gets(s1);
 11     gets(s2);
 12     while(s1[i] == s2[j]&&s1[i]!='\0'&&s2[j]!='\0')
 13     {
 14         i++;
 15         j++;
 16     }
 17     if(s1[i]>s2[j])
 18     {
 19         printf("s1>s2\n");
 20     }
 21     else if(s1[i]<s2[j])
 22     {
 23         printf("s2>s1\n");
 24     }
 25     else
 26     {
 27         printf("s1=s2");
 28     }
 29 
 30     return 0;
 31 }

strcat

 strcat函数声明:char *strcat(char *dest,const char *src)

功能:拼接字符串

参数:dest //目的字符串,可以传入一维数组名;

src //源字符串,可以传入的参数有:一维数组名或者字符串常量;

strcat(s1,s2);
strcat(s1,"hello");
strcat("hello","world");

下面代码相当于strcat函数的功能:

  1 #include<stdio.h>
  2 
  3 int main()
  4 {
  5     char s1[50];
  6     char s2[50];
  7     int i = 0;
  8     int j = 0;
  9     gets(s1);
 10     gets(s2);
 11 
 12     while(s1[i] != '\0')
 13     {
 14         i++;
 15     }
 16 
 17     while(s2[j]!='\0')
 18     {
 19         s1[i] = s2[j];
 20         i++;
 21         j++;
 22     }
 23     s1[i]='\0';
 24 
 25     puts(s1);
 26     puts(s2);
 27     return 0;                                                                                                                                                                                                   
 28 }  

二维数组:

定义:①类型说明符 ②数组名 ③[常量表达式]④[常量表达式]

①类型说明符:用来说明数组中存储的数据的类型

②数组名:与标识符命名规则一样。

③常量表达式:说明有几行

④常量表达式:说明有几列

数组初始化:

全部初始化:

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}};

部分初始化:(没有初始化的地方自动初始化为0)

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

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

n维数组的本质是n-1维数据类型的一维数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值