C语言学习笔记(7)字符串

C语言学习笔记(7)字符串

字符数组与字符串

字符数组也属于数组这是这个数组是用来存放多个字符的

形式:


char c[5]     //声明格式

char c[5] = {'a','b','v','d','e'};     //初始化格式

注:

在对字符数组初始位化时,若赋值的元素不够数组中的元素个数则后面的元素自动为0

且在初始化时,可以用字符的ASCII值来表示字符

例:


char c[5] = {'a','b','c','d'};     //字符数组为     a b c d 0

char c[5] = {115,117,110,49}       //字符数组仍为   a b c d 0

字符串的储蓄

1.在储存时空格也会被当做字符录入

2.定义字符数组时应保证数组长度大于字符串的实际长度。若字符串的长度为11,那定义字符数组时的长度至少应为12

3.字符串初始化字符组时,编译系统自动处理结束
例:

char c[] = "a sunn day"		//系统默认数组c默认长度为12,即字符串长度+1

4.不能用赋值符号将字符串整体赋给字符数组。

5.可以用字符串常量给多维数组初始化

字符串的输入和输出

输入
1.gether函数

for(i = 0;(a[i] = getchar())! = '\n';i++);			//从键盘输入一字符串,回车为结束标志
a[i] = '\0';

gether函数可以以任何输入字符作为结束标志,可在输入过程对字符串进行处理;但格式繁琐,容易出错,且需要手工在最后加结束标志

2.scanf函数
可以用%c和%s格式输入字符串。
%c为逐个元素输入,%d为一次性输入字符串
例:

scanf("%s",a);			//输入一个字符串到数组a中

但是%s中空格,tab键和回车键会被当做隔离符而无法被接收

3.gets函数
可从键盘输入一个字符串(包括空格和tab)到数组,以回车键为结束标志,并自动将回车替换为’\0’存入数组

char c[13];
gets(c);			//c为数组c在内存中的首地址
A sunny day 		//	即为输入的数据

字符串的输出
1.putcher函数
例:

for(i = 0;a[i] != '\0';i++)		//利用putchar和循环结构输出字符串
putchar(a[i]);

putchar函数可以有选择的输出,可以以任何字符为输出结束标志0

2.printf函数
与scanf函数类似,%c逐个输出元素,%s输出整个字符串

printf("%s",a);			//输出数组a中存放的字符串

3.puts函数
puts函数为包含在stdio.h中的专用字符串输出函数,功能是:输出一个字符串用将结束标志’\0’转换为’\n’输出。

char c[] = {"a sunny day"};
puts(c);			//输出数组c中的字符
puts("a sunny day");		//输出字符串常量

puts函数格式简洁,能自动将结束标志转换为回车后输出,但是尾串必须有结束标志。

字符串处理函数

字符串连接函数strcat
函数原型:char * strcat(char * strl,char * str2)
将str2中的字符串内容接到str1字符串后面(数组str长度必须足够大),且str2的内容不变。

字符串复制函数strcpy
函数原型:char * strcpy(char * str1,char * str2)
将str2中的字符串复制到str1中,str1原有内容被覆盖,str2中内容不变。

字符串比较函数strcmp
函数原型:int strcmp(char * str1 , char * str2)
依次比较str1和str2 的ASCII码值,若str1>str2,则值为1,如果str1 例:

char c1[22] = {"sunny rain!"};
char c2[22] = {"sunny rain!"};
int i;
i = strcmp(c1,c2);		//‘r’的ASCII码值大于‘d’的ASCII码值,则i = 1

字符串长度函数

函数原型:unsigned int strlen(char * str)
返回字符串实际长度(不包括结束标志)
例:

char c[10] = {"sunny day"};		
printf("%d" , strlen(c));		//输出数组c中字符串长度9
printf("%d" , strlen("Hello!"));	//输出字符串常量的长度6

你可能感兴趣的:(c语言)