25.9.14 C语言 字符、字符串与数组
1、字符
字符
字符字面量是用单引号括起来的单个字符或转义序列
两者基本内涵相似,略有区别
字符字面量就是输入时的形式,比如’A’;
而字符就是’A’进入内存后编译转换得到的数据序列,即它的本质是对应的唯一二进制序列
2.字符串
字符串是用双引号括起来的单或多个字符或转义序列
本质上是一个以“\0”(空字符,ASCII编码为0)结尾的字符数组(这个东西不能缺,若存入时缺失,输出时可能会导致读取到其他数据,因为字符串没有停止)
因此’A’对应65,而”A”对应650
3.字符数组
本质上是一个盒子,里面有很多格子,按次序将输入的内容一个字符一个字符地储存在格子里,打印时格式符需用%s
一维字符串数组表示方法为:
- char myword[6]=”hello”(6为格子数,等于字符数+1)
- char myword[]=”world”(不填格子数,让系统看着办)
- Char myword[6]={‘H’,’E’,’L’,’L’,’O’,’\0’}(自己做格子,手动输入每个格子的内容)
二维字符串数组为
char names[2][4]={ {'J','a','y','\0'},{'J','i','m','\0'} };
(第一个中括号为盒子数,第二个中括号为每个盒子的格子数)
打印方式如下
#include <stdio.h>
int main() {
char names[2][4] = { {'J','a','y','\0'}, {'J','i','m','\0'} };
printf("打印字符值:\n");
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 4; j++) {
printf("%c ", names[i][j]); // 打印字符(以格子为单位)
}
printf("\n");
}
printf("\n作为字符串打印:\n");
for(int i = 0; i < 2; i++) {
printf("%s\n", names[i]); // 作为字符串打印(以盒子为单位)
}
return 0;}
结果如下:
打印字符值:
J a y
J i m
作为字符串打印:
Jay
Jim
4.字符串的输入
a、scanf函数
基本形式:scanf(“格式说明符”,储存数据的变量地址)
格式说明符:%d,%f,%lf(double类型浮点数),%c(单个字符,会读取空白字符),%s(从非空白字符开始读取字符串,不读空格,s前数字代表字符串长度,需包括空字符),%[](读取匹配字符集中的字符)
储存数据的变量地址:&变量名,字符数组名前不加&
%c的处理方法:
在引号内,%c前加上空格,或者在scanf函数之间加上getchar()或clearbuffer()清除空白字符
b、fgets函数
涉及指针,后面再学吧

浙公网安备 33010602011771号