一、什么是字符串?
在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。
空字符(Null character)又称结束符,缩写 NULL,是一个数值为 0 的控制字符,\0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符。
二、字符串的输入和输出
#include <stdio.h>
int main()
{
//字符串的定义
char cdata1[] = "I am a student";
char cdata2[15] = {'I','\0','a','m','\0','a','\0','s','t','u','d','e','n','t','\0'};
char *p = "I am a student"//字符串常量,不允许被修改
/*字符数组的输入输出可以有两种方法。
(1)逐个字符输入输出。用格式符“%c”输入或输出一个字符
(2)将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串(string)的输入输出*/
for(int i=0;i<15;i++){
printf("%c",cdata2[i]);
}
printf("\n%s",cdata1);
printf("\n%s",cdata2);//用%s输出cdata2,遇到空字符会提前结束打印
return 0;
}
/*运行结果
I am a student
I am a student
I*/
三、处理字符串的常见函数
1、puts函数
输出字符串的函数
一般形式 puts(str);
str -- 这是要被写入的C字符串。
自带换行符,其作用是将一个字符串(以'\0'结束的字符序列)输出到终端。
2、gets函数
输入字符串的函数
一般形式 gets(str);
str -- 这是指向一个字符数组的指针,该数组存储了C字符串。
其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。
3、strcat函数
字符串连接函数
一般形式 strcat(str1,str2);
其作用是把两个字符串连接起来:
将字符串str2连到字符串str1后面。函数调用后得到字符串str1的地址。
函数原型 char *strcat(char *dest, const char *src);
dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
src -- 指向要追加的字符串,该字符串不会覆盖目标字符串。
//strcat函数使用方法
#include <stdio.h>
#include <string.h>
#include <assert.h>//assert的头文件
int main()
{
//char *strcat(char *dest, const char *src);函数原型
char str1[] = "Changcheng";
char str2[] = " Pao!";
strcat(str1,str2);
printf("%s",str1);
return 0;
}
/*运行结果:
Changcheng Pao!*/
//strcat的函数实现
char *myStrcat(char*dest,const char *src)
{
if(dest == NULL && src == NULL){//先判断两个字符串是否为空
return NULL;
}
char *bak = dest;//先将dest的地址备份
while(*dest != '\0'){//定位到dest的末尾
dest++;
}
while(*dest++ = *src++);//将src的内容复制到de