c语言中字符串的处理方式

c语言中字符串的处理方式

ID:8966906

大小:33.50 KB

页数:4页

时间:2018-04-13

c语言中字符串的处理方式_第1页
c语言中字符串的处理方式_第2页
c语言中字符串的处理方式_第3页
c语言中字符串的处理方式_第4页
资源描述:

《c语言中字符串的处理方式》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C语言中字符串的处理方式“很难从字符串中找到感觉,但它们却是我们能指望的唯一交流纽带”                              --《C语言程序设计现代方法》  写多了Java代码,对String类很是喜爱,可惜经典的C语言没有。。。最近在做程序过程中,发现对C语言字符串的处理很模糊,一会儿用数组,一会儿用指针,一会儿又引入string.h。。。于是决定总结一下C语言中字符串的处理,一则作为笔记,二则作为技术交流和大家分享。字符串字面量(字符串常量,在C标准中称为,字符串字面量)如何存储字符串字面量  从本质上而言,C语言把字符串字面量作为字符数组来处理

2、。当C语言编译器在程序中遇到长度为n的字符串字面量时,它会为字符串字面量分配长度为n+1的内存空间,在末尾增加一个额外的字符——空字符()。字符串字面量的操作  通常情况下可以在任何C语言允许使用char*指针的地方使用字符串字面量。如:char*p;p="abc";1这个赋值操作不是复制"abc"中的字符,而仅仅是使p指向字符串的第一个字符。字符串变量  一些编程语言为声明字符串提供了特殊的string类型。C语言采取了不同的方式:只要保证字符串是以空字符串结尾的,任何一维的字符数组都可以用来存储字符串。如果编写自己的字符串处理函数,请千万注意要正确地处理空字符。 

3、 假设需要变量用来存储最多80个字符的字符串。既然字符串会在末尾处需要空字符,那么要声明的变量是含有81个字符的数组。#defineSTR_LEN80/*惯用法*/charstr[STR_LEN+1];2对宏加一的这种方法是C程序员常用的方式。初始化字符串变量chardate1[8]="June14";date1:

4、J

5、u

6、n

7、e

8、

9、1

10、4

11、

12、chardate2[9]="June14";date2:

13、J

14、u

15、n

16、e

17、

18、1

19、4

20、

21、

22、大体上来说,这种行为与C语言处理数组初始化的方法一致。字符串变量的声明可以忽略它的长度。这种情况下,编译器会自动计算长度:chard

23、ate3[]="June14";编译器为date3分配8个字符的空间。字符数组与字符指针一起来比较一下下面两个声明:chardate[]="June14";它声明date是个字符数组。和这个声明相似的是下面这个声明:char*date="June14";它声明date是个指向字符串字面量的指针。[注意],不能错误地认为上面两种date可以互换。两者之间有着显著的差异:(1)在声明为数组时,就像任意数组元素一样,可以修改存储在date中的字符。在声明为指针时,date指向字符串字面量。(2)在声明为数组时,date是数组名。在声明为指针时,date是变量,这个变量可以在程序

24、执行期间指向其他字符串。  如果需要可以修改的字符串,那么就要建立字符数组来存储字符串。这时声明指针变量是不够的。下面的声明使编译器为指针变量分配了足够的内存空间:char*p;可惜的是,它不为字符串分配空间。在使用p作为字符串之前,必须把p指向字符串数组。一种可能是把p指向已经存在的字符串变量:charstr[STR_LEN+1],*p;p=str;现在p指向了str的第一个字符,所以可以把p作为字符串使用了。3.字符串的读写  3.1用printf函数和puts函数写字符串  %s允许printf函数写字符串。如:charstr[]="Arewehavingfunye

25、t?";printf("Valueofstr:%s",str);如果只显示字符串的一部分,可以用%.ps。这里的p是要显示的字符数量。语句printf("%.6s",str);会显示出Arewe  C函数库还提供puts函数。puts(str);    3.2用scanf函数和gets函数读字符串  在scanf函数调用中,不需要在str前添加运算符&。因为str是数组名,编译器会自动把它当作指针来处理。调用时,scanf函数会跳过空白字符,然后读入字符,并且把读入的字符存储到str中,知道遇到空白字符为止。scanf函数始终会在字符串末尾存储一个空字符。用sca

26、nf函数读入字符串永远不会包含空白字符。因此,scanf函数通常不会读入一整行输入。换行符会使scanf函数停止读入,空格符或制表符也会产生同样的效果。可以参考下面的例子:#include#defineSTR_LEN80intmain(){charstr[STR_LEN+1];printf("inputastring:");scanf("%s",str);printf("Stringinputedis:%s",str);return0;}运行结果如下:Inputastring:thisisastringS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。