您的位置:首页 > 职场人生

黑马程序员---学习笔记6:字符串

2015-08-19 23:47 459 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
——-

字符串:

位于双引号中的字符序列。在内存中以“\0”结束,所占字节比实际多一个。(\0是空字符,就是ascii码为0的那个)

注意:我们可以把字符常量赋值给字符变量,但是不能把字符串常量赋值给字符变量。

C语言中没有字符串类型的变量,可以用字符数组来存放字符串。

字符数组的定义:

1)一维字符数组定义;

char 数组名[常量表达式];

2)二维字符数组定义:

char 数组名[常量表达式][常量表达式]

字符数组初始化以及引用方式:

1,初始化

1)定义同时初始化:

char ch[5]={'a','b','c','d','e'};

char ch[ ]={'a','b','c','d','e'};

char ch[5]={'a','b','c'};部分初始化,其余部分,系统自动初始化为‘\0’

char ch[5]={[3]='d'};选择初始化,指定初始化的元素

2)先定义,后初始化

char ch[3];

ch[0]='a';

ch[1]='b';

ch[2]='c';

2,引用:

下标法进行引用和遍历

3,字符数组用来保存字符串

字符数组的作用:

1)保存字符

2)保存字符串

第一种方式:

char ch[4]={"abc"};双引号括起字符串可以直接赋值,要为最后的结束符(\0)保留存储空间

第二种方式:

char ch[4]="abc"; 这种方式没有大括号,结果一样。

第三种:char ch[ ]=“helloworld!”;自动分配内存,包括结束符

字符串的输入和输出:

使用的格式字符串为“%s”,表示输入和输出一个字符串

printf("%s",ch[3]);

从给定的地址开始,一直输出字符,直到遇到\0就停止了

%S接收键盘上输入的一个字符串

char str[50];

从键盘上接收一个字符串,保存在str为首地址的数组中

scanf("%s",str);

注意:如果以%S进行输入的话,遇到空格就会停止输入,空格之后的字符就无法被接收

输入的字符串的长度要小于数组的长度。

字符串结束符的使用:

用%S打印字符串,会遇到问题,那就是在遇到\0之前一直打印,根本停不下来。(把内存中的数据都打印出来)

char str[]="abc\0abc";

printf("%d\n",sizeof(str));//打印的结果是8

有专门计算字符串长度的方法

1)使用字符串函数:strlen(str);结果是7,这个函数不会计算结尾的\0

int searchChar(char str[ ],char key)

{

for(int i=0;str[i]!='\0';i++)

{

if(str[i]==key)

{

return i;

}

}

return -1

}


注意:在定义数组的数据类型时,定义的是数组所包含的元素的的数据类型,而不是数组名的类型,数组名永远是一个指针,指向第一个元素的地址,即数组的首地址。

字符串函数的使用:

puts() 输出一个字符串

puts(字符数组名)

puts函数可以自动换行,默认在打印的字符串后面换行

参数可以不是数组首地址可以是元素地址

puts不可以格式化输出,就是puts(--->%s);这是不可以的,只能puts(%s);

gets()输入一个字符串

gets(字符数组名)

使用gets会给出一个警告,这是指,如果数组是100,但是你输入120个字符,它是不会报错的,但是它有一个优势,就是可以接收空格,scanf不可以的

strcat()连接两个字符串,使用该函数引入string.h

strcat(A,B);把字符串B连接到字符串A后面

注意:字符串A的长度要足够的大,要能容下A+B的长度,字符数组B把A的最后一个字符\0给覆盖了

strcpy 字符串拷贝函数

strcpy(oldStr,newStr);把newStr拷贝到oldStr中,覆盖oldStr的内容,一定要保证oldStr的内存足够大

strcmp 比较两个字符串的大小

规则:比较Ascii码值 比较在字典中出现的顺序

比较过程:逐个取两个字符串的字符,进行比较,从第一个不相同的开始就能确定字符串大小了

返回值:

>0 前一个大于后一个(真正的值时,两个字符相差的数值)

<0 前一个小于后一个

=0相同

strlen(字符数组名) :

个数 不包含\0的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: