快捷搜索:  汽车  科技

c语言字符串和字符数组:零基础学C语言 知识总结六 数组

c语言字符串和字符数组:零基础学C语言 知识总结六 数组4、printf()做为单个字符输出的时候使用%c数据类型说明符,做为字符串输出时使用%s数据类型说明符注:需先定义 char 字符变量='单个字符';2、putchar()函数原形:int putchar(int char);返回值:该函数以无符号 char 强制转换为 int 的形式返回写入的字符,当输出正确的时候,返回输出字符转换为的unsigned int (无符号)值,当输出错误的时候,返回EOF(End of file)文件结束符,表达式可以是字符型或整型,它每次只能输出一个字符 如:“putchar('#')”输出字符“#”(其函数度原型在stdio.h中)3、putch()函数原形:int putch(int ch);返回值:如果输出成功,函数返回该字符;否则返回EOF。在当前光标处向文本屏幕输出字符ch,然后光标自动右移一个字符位置(其函数

3、getch()函数原形:int getch(void); 它的功能和getchar基本相同,差别在getch是直接从键盘获取值,不等用户按键,它直接返回用户输入的ASCII码值,出错就返回-1(getchar和getch都可以用来放在程序的末尾,当作“暂停键”使用,此时圆括号不需要参数,按任意键继续)

4、scanf()做为单个字符输入时使用%c数据类型符,用于字符串时使用%s数据类型符(注意使用%s时不用加&)

输出:

1、puts()函数原形:int puts(const char *s); 返回值:用来向标准输出设备(屏幕)输出字符串并换行,把字符串输出到标准输出设备,将'\0'转换为回车换行,只能输出字符串 不能输出数值或进行格式变换,可以将字符串直接写入puts()函数中:puts("Hello world!"); ( puts()和gets()都是数组函数,输入或输出前要定义数组,一个简单的输入后再将输入的东西输出)(puts(st);st为数组名)

2、putchar()函数原形:int putchar(int char);返回值:该函数以无符号 char 强制转换为 int 的形式返回写入的字符,当输出正确的时候,返回输出字符转换为的unsigned int (无符号)值,当输出错误的时候,返回EOF(End of file)文件结束符,表达式可以是字符型或整型,它每次只能输出一个字符 如:“putchar('#')”输出字符“#”(其函数度原型在stdio.h中)

3、putch()函数原形:int putch(int ch);返回值:如果输出成功,函数返回该字符;否则返回EOF。在当前光标处向文本屏幕输出字符ch,然后光标自动右移一个字符位置(其函数原型在头文件conio.h中 )

使用方式:1、putch('转义字符');2、putch('单个字符');3、putch(字符变量);

注:需先定义 char 字符变量='单个字符';

4、printf()做为单个字符输出的时候使用%c数据类型说明符,做为字符串输出时使用%s数据类型说明符

(puts()的输入和printf的输出是有一定的区别的,puts()遇到‘\0'就终止,而用printf则不会这样。)

(printf函数可输出各种不同类型的数据,putchar函数只能输出字符数据,而puts函数可输出字符串数据。)

5、单字符数组

字符数组是指用来存放字符数据的数组。其定义的一般形式为: char 数组名[数据长度] 。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。用来存放字符数据的数组称为字符数组。字符数组中的一个元素存放一个字符。定义字符数组的方法与定义数值型数组的方法类似。由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据。但这时每个数组元素占2个字节的内存单元,浪费存储空间,它也可以是多维数组。

初始化:

1、字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。

2、用字符常量逐个初始化数组:char a[5]={'a' 'b' 'c' 'd' 'e' }; 把8个字符依次分别赋给c[0]~c[4]这5个元素

3、如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果字符个数大于数组长度,则出现语法错误。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度

例子:输入一行字符,统计其中有多少个单词和有多少个a(大小写都算),单词之间用空格分隔开

c语言字符串和字符数组:零基础学C语言 知识总结六 数组(1)

6、字符串(数组)

1、C语言中没有字符串类型,字符串是存放在字符型数组中。字符反映在现实中就是文字、符号、数字等人用来表达的字符,反映在编程中字符就是字符类型的变量。C语言中使用ASCII编码对字符进行编程,编码后可以用char型变量来表示一个字符。C语言的字符串就是多个字符打包在一起共同组成的,字符串在内存中其实就是多个字节连续分布构成的

2、字符串通常以串的整体作为操作对象,以整数0(‘\0’也一样)或NULL结尾的,‘\0’ 标致着字符串的结束也是字符串的标志,但是计算长度时不包括这个0,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefgij”,则s[1]=“b”,s[9]="j",而字符串的零位正是它的长度,如s[0]=10,这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组

3、字符串或串(string)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。字符(string)是符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

4、C语言的字符串不能运用运算符对其操作,通过数组的方式可以遍历字符串,唯一特殊的地方就是字符串字面量可以用来初始化字符数组,字符串以数组的形式出现,以数组或指针的形式访问(更多的时候是用指针的形式)

C语言标准库和string.h头文件里提供了一系列的字符串操作函数

5、字符串常量:char *s=“Hello world”; s是一个指针,初始化指向一个字符串常量,由于这个常量所在的地方,所以实际上s是const 的char *s,但由于历史的原因,编译器接受不带const 的 char *s的写法,但是如果试图对s所指的字符串做写入有可能会造成严重后果,所以 如果需要修改字符串,应该用数组,char s[ ] ="Hello world";

" Hello" 会被编译器变成一个字符数组放在某处,这个数组的长度是6,结尾还会有个零表示结束,两个相邻字符串常量会被自动链接起来。

初始化

1、直接用字符数组的方法初始化:char str[10]={ 'I' ' ' 'a' 'm' ' ' ‘h’ 'a' 'p' 'p' 'y'};(字符数组的赋值只能按元素一一赋值)

2、使用输入字符的输入函数进行输入赋值

3、也可以省略花括号 :char str[ ]="I am happy";

Tips

字符串可以代表为char*的形式,但是 char * 不一定是字符串,本意是指向字符的指针,可能指向的是字符的数组(就像int*一样) 注意:只有它所指的字符数组末尾有0,才能说它所指向的是字符串

char *a ="Hello" 和char b[ ]="Hello" 的不同,做为数组的时候,它是个常量(这个字符串在这里 )。 做为指针,它是个变量(这个字符串不知道在哪里) (指针 可以用来处理参数,动态分配空间)所以 :如果要构造一个字符串—>用数组,如果要处理一个字符串—>用指针

c语言字符串和字符数组:零基础学C语言 知识总结六 数组(2)

字符(串)处理头文件

1、#include <string.h> //字符串处理

2、#include <ctype.h> //字符处理

里分别包含有以下这些函数:

strlen求字符串长度

strcmp比较2个字符串是否一样

strcat字符串连接操作

strcpy字符串拷贝操作(要求两个字符串长度足够)

strncat字符串连接操作(前n个字符)

strncpy字符串拷贝操作(前n个字符)

strchr找一个字符,查询在字符串中第一个出现这个字符的位置

strstr查询s1是否是s2子串

3、<ctype.h>里分别包含以下这些函数:

c语言字符串和字符数组:零基础学C语言 知识总结六 数组(3)

(使用函数时利用返回值来操作)

对于字符串的操作还有sprintf(把格式化的数据写入某个字符串中)和sscanf(读取格式化的字符串中的数据)这两个函数

作者:Mr_Li_

对啦对啦!另外的话为了帮助大家,轻松,高效学习C语言/C ,我给大家分享我收集的资源,从最零基础开始的教程到C语言项目案例,帮助大家在学习C语言的道路上披荆斩棘!可以来我粉丝群领取哦~

编程学习书籍分享:

c语言字符串和字符数组:零基础学C语言 知识总结六 数组(4)

编程学习视频分享:

c语言字符串和字符数组:零基础学C语言 知识总结六 数组(5)

猜您喜欢: