用来存放字符的数组称为字符数组,例如:
1. char a[10]; //一维字符数组
2. char b[5][10]; //二维字符数组
3. char c[20] = { 'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a','m' }; // 给部分数组元素赋值
4. char d[] = { 'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm' }; //对全体元素赋值时可以省去长度
字符数组实际上是一系列字符的集合,也就是字符串(String)。在 C 语言中,没有专门的字符串变量,没有 string 类型,通常就用一个字符数组来存放一个字符串。
在 C 语言中,字符串总是以’\0’作为结尾,所以’\0’也被称为字符串结束标志,或者字符串结束符
由" "包围的字符串会自动在末尾添加’\0’。例如,"abc"看起来只包含了 3 个字符但C 语言会 在最后添加一个’\0’,但我们感受不到。
而由‘ ’赋值的字符串则不会在末尾自动加 \0,若要以%s输出,则会输出错误,应该在末尾手动添加“\0”.
在 C 语言中,有两个函数可以输入字符串,它们分别是:
scanf():通过格式控制符%s 输入字符串。除了字符串,scanf() 还能输入其他类型的数据。
char str[50];
scanf(“%s”,str);
gets():直接输入字符串,并且只能输入字符串。
char str[50];
gets(str);
但是,scanf() 和 gets() 是有区别的:
scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空 格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。所以可以用 gets() 用来读取一整行字符串。
在 C 语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是:
puts():输出字符串并自动换行,该函数只能输出字符串。
4. char str[30]={"c,program"};
5. puts(str);
printf():通过格式控制符%s 输出字符串,不能自动换行。
1 char str[30]={"c,program"};
2 printf("%s\n",str);
string.h 是一个专门用来处理字符串的头文件,它包含了很多字符串处理函数以下例举了几个常用的函数,
在使用的时候不要忘记添加头文件
#include
strcat 是 string catenate 的缩写,意思是把两个字符串拼接在一起,语法格式为:
#include
#include
int main()
{
char str1={"hello "};
char str2;
gets(str2);
strcat(str1,str2);
puts(str1);
return 0;
}
strcpy 是 string copy 的缩写,意思是字符串复制,也即将字符串从一个地方复制到另外一个地方,
#include
#include
int main()
{
char str1={"hello "};
char str2={“world”};
strcpy(str1,str2);
puts(str1);
return 0;
}
将 str2 复制到 str1 后,str1 中原来的内容就被覆盖了。
另外,strcpy() 要求 str1 要有足够的长度,否则不能全部装入所拷贝的字符
strcmp 是 string compare 的缩写,意思是字符串比较
两个字符从第一个字符开始比较,若相同进行下一个字符的比较,直到得到结果
返回值:若str1 和 str2 相同,则返回 0;若str1 大于str2,则返回大于 0 的 值;若 str1 小于 str2,则返回小于 0 的值。
#include
#include
int main()
{
char str1={"hello "};
char str2={“world”};
printf("%d",strcmp(str1, str2));
return 0;
}
测量字符串的长度的函数
#include
#include
int main()
{
char str1={"hello "};
printf("%d",strlen(str1, str2));
return 0;
}