1.字符串与字符数组
字符串的表示
在c语言中,我们用单引号括起来的内容叫做字符。例如 'a' 'b' 'c';
我们把双引号括起来的内容称为字符串 例如 "abcdef" "wererewrwe";
这些都是字符串常量
字符串的存储以及初始化
由于在c语言中并没有字符串这种数据类型,我们就可以字符数组来存储字符串
定义字符变量来存储字符 例如 char s='a';
定义字符数组 char s[10]; //定义长度为十,名为s的字符数组;
比如下面这段代码:
char c1[] = { 'c', ' ', 'p', 'r', 'o', 'g' }; //普通字符数组,当我们没有指定数组的长度时,会根据后面括号内字符个数来自动推断长度
char c2[100]="asdfghjkl"; //也可以人为指定数组长度
字符串是以'\0' 结尾的,只有字符串才能用printf("%s",array);格式化输出,否则会产生乱码的后果
根据不同的情况,编译器会智能地自动为字符串加上'\0';
char c3[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0', 'h', 'l', 'l', 'e', 'o', '\0' };//'\0'作为字符串的结束符,输出字符串时编译器会判断当前字符是否是'\0'如果是,则停止输出
//指定长度,后面没有赋值的元素,自动补0
char buf2[100] = { 'a','b','c' };
char buf[1000] = { "hello" };
//char buf4[2] = { '1','2','3' };//数组越界
//使用字符串初始化,编译器自动在后面补0,常用
char buf8[] = "dgasiugduaishg";
字符串的输入与输出(常用)
1 gets()
功能:从标准输入读入字符,并保存到s指定的内存空间,直到出现换行符或读到文件结尾为止。
2 scanf()
功能 :读取一串不包含空格的字符串 scanf("%s", str)
注意:由于scanf()和gets()无法知道字符串s大小,必须遇到换行符或读到文件结尾为止才接收输入,因此容易导致字符数组越界(缓冲区溢出)的情况,所以我们在定义char型数组时,应该确保其空间足够大。
3 puts() 输出字符串,并在结尾自动换行
4 printf() 格式化输出字符串
字符串常用处理函数
注意当我们使用这些函数时,需要在文件头引入
#include<string.h>
1 strlen() 返回字符数组的实际长度
#include<stdio.h>
#include<string.h>
int main()
{
char s[]="ericff";
int len=strlen(s);
printf("%d",len);
return 0;
}
2 strcat函数
其形式为:strcat(字符数组1,字符数组2)——字符串连接的函数
作用是把两个字符数组中的字符串连接起来,把字符串2连接到字符串1的后面,结果放在字符数组1中。
#include<stdio.h>
#include<string.h>
int main()
{
char arry1[20]="我爱";
char arry2[10]="学习";
strcat(arry1,arry2);
printf("%s",arry1);
return 0;
}
3 strcpy函数
其形式为:strcpy(字符数组1,字符串2)——字符串复制的函数
作用是将字符串2复制到字符数组1中去。
#include<stdio.h>
#include<string.h>
int main()
{
char arry1[20];
char arry2[10]="学习";
strcpy(arry1,arry2);
printf("%s",arry1);
return 0;
}
4 strlwr函数
其形式为:strlwr(字符串)——转换为小写的函数
该函数的作用是将字符串中的大写字母转换成小写字母。
#include<stdio.h>
#include<string.h>
int main()
{
char arry1[20]="EriC";
strlwr(arry1);
printf("%s",arry1);
return 0;
}
5 strupr函数
其形式为:strupr(字符串)——转换为大写的函数
该函数的作用是将字符串中的小写字母转换成大写字母。
#include<stdio.h>
#include<string.h>
int main()
{
char arry1[20]="EriC";
strlwr(arry1);
printf("%s",arry1);
return 0;
}
6 strcmp函数(根据返回值来判断)
函数strcmp的功能是比较两个字符串的大小。也就是把字符串str1和str2从首字符开始逐个字符的进行比较,直到某个字符不相同或者其中一个字符串比较完毕才停止比较。字符的比较为ASCII码的比较。
#include<stdio.h>
#include<bits/stdc++.h>
#include<string.h>
int main()
{
char arry1[20]="abcd";
char arry2[20]="0bcd";
int x=strcmp(arry1,arry2);
printf("%d",x);
return 0;
}
习题
1.请将字符串”abcdefg”翻转输出;
#include<stdio.h>
#include<string.h>
int main()
{
char s[]="fangyiqi";
for(int i=0;i<strlen(s)/2;i++)
{
char ch=s[i];
s[i]=s[strlen(s)-i-1];
s[strlen(s)-i-1]=ch;
}
printf("%s\n",s);
return 0;
}