凤城市网站建设,网站开发报告步骤分析,做网站还有搞头吗,包头网站设计前言:前面已经介绍了#xff0c;字符数据是以字符的ASCII代码存储在存储单元中的#xff0c;一般占一个字节。由于ASCII代码也属于整数形式#xff0c;因此在C99标准中#xff0c;把字符类型归纳为整型类型中的一种。 #x1f496; 博主CSDN主页:卫卫卫的个人主页 #x…前言:前面已经介绍了字符数据是以字符的ASCII代码存储在存储单元中的一般占一个字节。由于ASCII代码也属于整数形式因此在C99标准中把字符类型归纳为整型类型中的一种。 博主CSDN主页:卫卫卫的个人主页 专栏分类:C程序设计谭浩强版本 代码仓库:卫卫周大胖的学习日记 关注博主和博主一起学习!一起努力 目录 怎样定义字符数组字符数组的初始化怎样引用字符数组中的元素字符串和字符串的结束标志字符数组的输入输出用字符串处理函数puts函数 -- 输出字符串的函数gets函数 -- 输入字符串 字符数组应用举例 怎样定义字符数组
用来存放字符数据的数组是字符数组。在字符数组中的一个元素内存放一个字符。定义字符数组的方法与定义数值型数组的方法类似。例如
char c[10];
c[0] I; c[1] ; c[2] a; c[3] m; c[4] ;
c[5] h; c[6] a; c[7] p; c[8] p; c[9] y;以上定义了c为字符数组包含了10个元素。赋值以后数组的状态如下图所示 由于字符型数据是以整数的形式(ASCII代码)存放的因此也可以用整型数组来存放数据例如
int c[10];
c[0] a;
//虽然合法但是浪费空间字符数组的初始化
对于字符数组的初始化最容易理解的方式就是用初始化列表把各个字符赋给数组中的各个元素。例如
char c[10] {I, ,a,m, ,h,a,p,p,y};把10个字符依次赋给c[0] ~c[9] 这10个元素。
如果在定义字符数组时不进行初始化则数组中各元素的值是不可预料的。如果花括号中提供的初值的个数即字符个数大于数组长度则出现语法错误。如果初值个数小于数组长度则只将这些字符赋给数组中前面那些元素其余的元素自动定为空字符(‘\0’)例如:
char c[10] { a,b,c, ,d,m,y,h };数组状态如下图所示 (Vscode2019)下的状态 如果提供的初值个数与预定的数组长度相同在定义时可以省略数组长度系统会自动根据初值的个数确定数组长度。例如
int main()
{char c[] { a,b,c, ,d,m,y,h };printf(数组的长度是%d\n, sizeof(c)/sizeof(c[0]));//计算数组的长度return 0;
}运行结果 怎样引用字符数组中的元素
可以引用字符数组中的一个元素得到一个字符。 例题输出一个已知字符
int main()
{char c[15] { I, ,a,m, ,a, ,s,t,u,d,e,n,t};int i 0;for (i 0; i 15; i){printf(%c, c[i]);}printf(\n);return 0;
}运行结果 例题2:输出一个菱形
int main()
{int line 0;scanf(%d, line);//打印上半部分;int i 0;for (i 0; i line; i){//打印一行//打印空格//打印*int j 0;for (j 0; j line - 1 - i ; j){printf( );}//打印*for (j 0; j 2 * i 1 ; j){printf(*);}printf(\n);}//下for (i 0; i line - 1; i){//打印一行//打印空格//打印*int j 0;for (j 0; j i; j){printf( );}//打印*for (j 0; j 2 *(line - i - 1)- 1; j){printf(*);}printf(\n);}return 0;
}
运行结果 字符串和字符串的结束标志 在C语言中是将字符串作为字符数组来处理的。在实际工作中人们关心的往往是字符串的有序长度。例如定义一个字符数组的长度为100而实际有效字符只有40个。为了测定字符串的实际长度C语言规定了一个字符串结束标志以字符’\0’作为结束标志。如果字符数组中有若干字符前面9个字符都不是空字符(‘\0’),而第十个字符是‘\0’,则认为该数组中有一个字符串其有效字符为9个。也就是说遇到字符‘\0’ 时表示字符串结束把前面的字符组成一个字符串。 对于C语言处理字符串的方法有以上的了解后再对字符数组初始化的方法补充了一种方法即用字符串常量来使字符数组初始化。例如
char c[] I am a student;这里不像前面用单个字符作为字符数组的初始值而是用一个字符串(注意字符串的两端是双撇号而不是单撇号扩起来的)作为初值。显然这种方式更加直观、方便、符号人们的习惯。请注意此时c的长度不是14而是15。因为字符串常量的最好由系统加上一个’\0’。
int main()
{char c[] I am a student;printf(sz %d\n, sizeof(c) / sizeof(c[0]));//计算长度(包括\0)printf(len %d\n, strlen(c));//计算长度(不包括\0)return 0;
}运行结果:
(这里关于sizeof和strlen的区别就不具体说明有感兴趣的可以看我之前文章详细讲解了strlen与sizeof)关于strlen与sizeof 字符数组的输入输出
字符数组的输入输出可以有两种方法。
逐个字符输入输出。用格式符%c输入或输出一个字符如下图将整个字符串一次输入或输出。用%s格式符意思是对字符串(string)的输入输出。例如 char c[] china;printf(%s\n, c);在内存中数组c的存储情况为:
输出时遇到’\0’就停止输出。输出结果为:
用字符串处理函数
在C函数库中提供了一些专门处理字符串的函数方便使用。几乎所有版本的C语言编译系统都提供这些函数。下面介绍几种常用的函数。
puts函数 – 输出字符串的函数
其一般形式为 puts(字符数组) 其作用是将一个字符串(以’\0’作为结束的字符序列)输出到终端且puts函数输出使将字符串的结束标志’\0’转换成了’\n’即输出完字符串后换行 例如:
int main()
{char c[] china;puts(c);return 0;
}运行结果: gets函数 – 输入字符串
其一般形式为: gets(字符数组) 其作用是从终端输入一个字符串到字符数组并得到一个函数值。该函数值是字符数组的起始地址。 例如
int main()
{char c[10] { 0 };gets(c);puts(c);return 0;
}运行结果 strcat函数 – 字符串连接函数strcpy函数与strncpy函数 – 字符串复制函数strcmp函数 – 字符串比较函数
关于这些函数的讲解在这里我也不过多介绍了各位可以点这个连接跳转到我前面的博客里面详细讲解了这几个函数并且如何模拟实现这些函数。 字符串函数的讲解与模拟实现 字符数组应用举例
例题输入一行字符统计其中有多少单词单词之间用空格隔开。 方法1
int main()
{char arr[20] { 0 };gets(arr);char* str arr;int count 0;int i 0;while (*str)//判断\0{if (*str ! )//找出非空格的数{count;}str;}printf(%d\n, count);return 0;
}方法2
int main()
{char arr[20] { 0 };int i 0;int count 0;gets(arr);for (i 0; i 20; i)//变量数组{if (arr[i] ! \0 arr[i] ! ){count;}}printf(%d\n, count);return 0;
}运行结果 结语今天的内容就到这里吧谢谢各位的观看如果有讲的不好的地方也请各位多多指出作者每一条评论都会读的谢谢各位。 祝各位接下来好运连连