开发者学堂课程【你的第一门 C 语言课:字符和字符串】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/444/detail/5458
字符和字符串
目录:
一.案例:代码展示
二.如何给字符串赋值
一, 案例:代码展示
/**
*问题一:字符变量可以用来存放整数吗?
int main( ){
char a = ‘C’;
printf("%c = %d\n”,a,a);
return 0;
}
*输出的结果如下图:
*假设此处的字符是否也运用了查表的原理?
*答案是肯定的。
*查表查询的是标准 ,这个表格是设计者在设计之初
*为了便于计算机存储数据设置的。
*标准 ASCII 字符表使用7位二进制数来表示所有的大写和小写字母,*数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。
*其中,ASCII 字符表上的数字0~31以及127(共33个)分配给了控*制字符,用于控制像打印机等一些外围设备:
ASCII 字符表上的数字32~126分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现:
*之前我们编译的程序输出的 C 的值也可以在 ASCII 字符表上找到对*应的值
*新需求:
int main( ){
char a = 70, b= 105, c=115 ,d=104, e= 67;
printf("%c%c%c%c%c\n”,a,b,c,d,e);
return 0;
}
*打印的结果如下:
*为什么输入的是数字,打印的却是字符呢?
因为我们在输出的时候*指定了字符 C,所以系统会自动去扫描 ASCII 字符表,*打印的 FishC 的结果出来。
结论,字符类型实际上就是一个特殊的*整型。这里可以通过查看下表来理解整型的取值范围。区别在于,
*对于整型而言,不写 unsigned,系统会默认成是 int 类型。在 C 语*言里并没有规定字符串类型 char 类型是 char 还是 unsigned char。
*细节就是这些规定都是由编译系统自己决定。
举例:一位程序员需
*要使用某个字符串类型来存放身高这项数据。此时的编译系统会给*他分配 char 还是unsigned char 呢?如果是 unsigned char 则刚
*够用,下面就用一个简单的程序来演示一下:
int main( ){
char height;height = 170;
printf(""小甲鱼的身高是%d厘米 \n", height);
return 0;
}
*运行的结果如下图所示:
*这里给我们的经验教训是不要去想当然,注意程序的跨平台性。
*需要注意到它的取值范围是0~255,注意到这个细节后的输出结果
*为:
二, 如何给字符串赋值
- 字符串
-char
变量名[数量]
- 声明字符串
-char name [5]
//索引号是从0开始计算的,故它的值为0,1,2,3,4.
//可以通过索引号来获取对应的内存空间。
- 给字符串赋值:
name[0] = ‘F’;
name[1] = ‘i’;
name[2] = ‘s’;
name[3] = ‘h’;
name[4] = ‘C’;
- 定义字符串:
Char name[5] = {‘F’,’i’,’s’,’h’,’c’};
实例:
Int main()
{
Char a [5] = {‘F’,’I’,’s’,’h’,’c’};
Print {“%s\n”,a};
Print{“Hello\n”};
Return 0;
}
//运行结果出现乱码:
//报错原因,缺少了\
//修改后的代码如下所示:
Int main()
{
Char a [6] = {‘F’,’I’,’s’,’h’,’c’,’\0’};
Print {“%s\n”,a};
Print{“Hello\n”};
Return 0;
}
//运行结果恢复正常:
//对该部分代码进行如下优化,省去了数的环节:
Int main()
{
Char a [] = {“FishC”};
Print {“%s\n”,a};
Print{“Hello\n”};
Return 0;
}
//这里不用添加\,系统会自动给用户进行补充。
//运行结果如下图: