1、字符数组
● C 语言中没有专门的字符串变量,通常用一个字符数组来存放字符串;
char str[13] = {"www.youkuaiyun.com"};
//第二种更简洁
char str[13] = "www.youkuaiyun.com";
//或者也可以不指定数组长度
char str[] = "www.youkuaiyun.com";
● 字符数组只有在定义时才能将整个字符串一次性赋值,定义之后只能一个字符一个字符的赋值;
● C 语言中,字符串以 '\0' 作为结尾,ASCII 码表中英文称为 NUL,中文称为 空字符;
该字符既不能显示,也没有控制功能,输出该字符没有任何效果;
C 语言中该字符的唯一作用就是作为字符串结束标志;
2、C 语言中对于字符串的处理
● C 语言中用 scanf 函数读取数组或者字符串时,不用添加&,因为数组和字符串本身就会转换地址;
● C 语言在处理字符串时,会从前往后逐个扫描字符,遇到 '\0' 就认为到达了字符串的末尾,作结束处理;
● 由 " " 包围的字符串会自动在末尾添加 '\0' ;
● 逐个字符给字符数组赋值并不会自动添加 '\0' ,所以我们逐个字符存储字符串时,要为 '\0' 预留位子;
也就是说,此时的数组长度要至少比字符串的长度大 1;
● 由于在很多编译器中,变量的初始值的随机的,是垃圾值,并不是我们通常认为的 " 零 " 值;
● 写代码的时候,尽量将数组初始化的时候将所有元素全部手动赋值为 0;
#include <iostream>
int main()
{
//将数组所有元素初始化为0,避免因垃圾值带来的显示错误
char str[50] = { 0 };
//逐个将26个大写英文字母写入数组
for (int c = 65, i = 0; c <= 90; c++, i++)
{
str[i] = c;
}
//将字符数组作为字符串输出
/*因为ASCII码表中'\0'的码值为0,所以所有字母输出完毕之后,编译器遇到0值,认为字符串结束,不再
输出字符数组中的其他剩余内容*/
printf("%s\n", str);
return 0;
}
3、strlen () 函数
● C 语言中,使用 string.h 头文件中的 strlen () 函数求字符串的长度;
该函数求出的字符串长度不包含 '\0' ;
#include <iostream>
#include <string.h>
int main()
{
char str[] = "www.youkuaiyun.com";
printf("字符串的长度为:%d\n", strlen(str));
return 0;
}