码迷,mamicode.com
首页 > 其他好文 > 详细

字符串笔记

时间:2015-07-01 00:53:18      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

字符串: 位于双引号中的字符序列。

 

1. 不能把字符串常量赋值给一个变量;

2. C语言中没有字符串变量,可以用字符数组来存放字符串;

3. 字符数组存放字符串,每个数组元素存放一个字符;

4. 加双引号的字符串,在字符串末尾系统会加上一个“\0”的结束符;

 

 

字符数组的定义:

a. char 数祖名[数组长度] = “abc”;  //这点就是和普通数组的区别,普通数组是不允许省略花括号的。

b. 或者 char 数祖名[数组长度] ={ “abc”};

c. char 数祖名[数组长度] = {‘a’, ‘b’, ‘c’};

注意:

a方法定义的数组内存放的字符有四个:’a’ ‘b’ ‘c’ ‘\0’,原因是双引号内的字符串,系统会在末尾加’\0’作为字符串结尾标识符;

b方法定义的数组内存放的字符有三个:’a’ ‘b’ ‘c’

 

初始化:

1. 定义时部分初始化,为初始化的部分系统自动初始化,填充字符’\0’

2. 初始化时存放字符串,数组长度至少要比字符串中字符个数多1;例如char ch[] = “abc”,ch的长度是4;如果定义时char ch[3] = “abc”是有问题的;

 

 

字符串的输入和输出:

1. %s,从给定的地址开始输出字符串,直到遇到’\0’结束。 printf(“%s”, arr);//arr 字符数组名

2. %s,从键盘上接收一个字符串,保存到指定地址:scanf(“%s”, addr); // addr 数组首地址也就是数祖名

3. %s,从键盘上接收字符串,输入输入的字符串有空格,则空格之后的字符无法被接收。也就是这种情况下,空格是接收结束符

4. 输入的字符串长度要小于数组的长度,否则不能完全保存字符串。

 

字符串结束符的使用:

1. 以%s输出字符串,是从指定地址开始一直输出到’\0’,所以如果一个数组中没有存放’\0’;当用%s输出字符串,指定地址为这个没有’\0’的数组的地址时,不仅仅会输出该数组中的字符串内容,还会输出这个地址以后的所有内容,直到遇到’\0’, 如果内存中没有存储’\0’,则这个指令会一直执行下去,直到出现异常。所以字符数组中不存放’\0’,是有危险性的。

 

 

字符串函数:

除了输入、输出函数使用stdio.h头文件外,其他字符函数需使用string.h头文件。

 

#1 字符串输出函数puts()

function:输出一个字符串。

puts(地址);

输出字符串完成后自动输出换行;

 

#2 字符串输入函数gets()

function: 接收一个字符串

gets(str)//把接收的字符存入到str指向的地址对应的空间。

使用gets会给出一个警告,不安全:例如数组长度是100,但输入了多余100个字符,则会存在数组悦姐问题。

使用gets可以接收空格

 

#3 字符串连接函数strcat() 

把一个字符串连接到另一个字符串。

strcat(A,B), 把字符串B连接到A的后面。B把A后面的’\0’给覆盖了。A的长度应该需要足够大。

 

#4 字符串拷贝函数strcpy()

strcpy(oldStr, newStr),把newStr拷贝到oldStr中,会覆盖oldStr中所有的内容。复制时连同结束标记’\0’一起复制。

注意:oldStr的空间需要足够大,否则会越界。

 

#5 字符串比较函数strcmp()

比较字符的ascii的码值。strcmp(str1, str2),str1 > str2 返回正数; str1 == str2 返回0;str1 < str2返回负数;

 

#6 字符串长度计算函数strlen()

strlen(str)计算出来的是str中首次出现的’\0’前出现的字符个数。(不包含’\0’)

字符串笔记

标签:

原文地址:http://www.cnblogs.com/siyingcheng/p/4612114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!