C语言字符数组与字符串


前言

字符串函数头文件#include<string.h>


一、字符串

通常情况下,字符串存储在一维字符数组中,在C语言中以特殊字符“\0”作为串的结束标记

1.字符串长度函数strlen()

源函数

int strlen(char *s)
{
int n=0;
while(s[n]!='0')
n++;
return n;
}

使用函数

char st[20]="hello boy";
int len;
len=strlen(st);
printf("%d\n",len);

2.字符串连接函数strcat()

用strcat函数实现两个字符串连接,结果放在第一个字符数组

char str1[80],str2[30];
int i=0;
gets(str1);
gets(str2);
strcat(str1,str2);
puts(str1);
return 0;

3.字符串复制函数strcpy()

源函数(有缺陷版本)——没有考虑目的串的dest的空间是否足以容纳源src的串值

char *strcpy(char*dest,char*src)
{
int i=0;
while(src[i]!='\0')
{dest[i]=src[i];i++;}
dest[i]='\0';
return dest;
}
char str[80],str2[20]="goof luck!"
strcpy(str1,str2);

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

若字符串1大于字符串2,函数返回一个正整数;若字符串1小于字符串2,函数返回一个负整数(字符串比较大小,比的是对应字符ASCLL码的大小,而不是比两个字符串的长度)

int k;
k=strcmp("Hi","Hello");

二.字符数组

1.数组第一维指的是数组的行数

当第一维大小未知时,可以用数组的元素个数除以第二维的数字,若有余数,则商+1就是第一维的大小,没有余数商就是第一维的大小。

2.字符串的初始化

1.字符串常量以‘\0’作为结尾,这是字符串的特性。
所以在存储时,字符数组长度一定要比字符串长度至少多1。
例如:字符串“Frank”的有效字符只有5个,但是存储它的字符数组长度至少需要6个
2.字符串赋值字符数组的书写形式,可以加“{“字符串”}”,也可以不加,直接加"字符串"

3.两个连续的单引号

用单引号表示的是字符类型的,而字符类型是一个单字节数据,必须有一个字节,所以连续两个单引号是不合法的,而双引号表示的是一个字符串,是一个内存地址,连续的双引号表示这个地址内没有字符,所以它是合法的

4.大数的输入和输出

在计算机里,用int型和double型处理大数,前者会造成数据溢出,后者会失真产生数据偏差。所以一般用字符来处理数据。
定义int型数值用double型输出也会造成数据失真

5.当想要输入的字符与需要定义的字符数组长度相同时,可以省略定义数组长度

例如:char str[]={‘F’,‘r’,‘a’,‘n’,‘k’};此时系统将数组str的长度自动定义为5

6.字符的输入输出

getchar()输入函数,可以读取空格,但只能一个个字符输入
如果用scanf()函数按照%s格式输入字符串,只接受不带空格的字符串,并以回车结束
gets()函数可以接收带空格的字符串,gets函数的作用是从终端输入一个字符串到字符数组,同样以回车结束,输入到字符数组后自动将\n换成\0

三.函数

1.形参

在不同的函数中,形参是局部变量,只在函数内起作用,不会影响到其他函数。 在不同函数中使用相同的变量名不代表是同一变量。 在不同函数中可以使用相同名字的变量。

四.指针

1.表示地址

  1. 指针是一个地址,但其本身是具有地址的,它的作用就是指向另一个变量的地址
  2. 表示指明变量为指针变量,int/double*/float*声明可以通过这个指针变量可以访问指定类型的存储单元中的数据
  3. 指针在使用前必须赋值,未使用的指针变量可以赋空值*pi=NULL或0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

andychenduoduo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值