网站大量收购独家精品文档,联系QQ:2885784924

C语言中字符串的处理方式.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中字符串的处理方式.doc

C语言中字符串的处理方式 “很难从字符串中找到感觉,但它们却是我们能指望的唯一交流纽带”                               --《C语言程序设计 现代方法》   写多了 Java 代码,对 String 类 很是喜爱,可惜经典的 C 语言没有。。。最近在做程序过程中,发现对C语言字符串的处理很模糊,一会儿用数组,一会儿用指针,一会儿又引入 string.h。。。于是决定总结一下C语言中字符串的处理,一则作为笔记,二则作为技术交流和大家分享。 字符串字面量(字符串常量,在C标准中称为,字符串字面量) 如何存储字符串字面量  从本质上而言,C语言把字符串字面量作为字符数组来处理。当C语言编译器在程序中遇到长度为n的字符串字面量时,它会为字符串字面量分配长度为n+1的内存空间,在末尾增加一个额外的字符——空字符(\0)。 字符串字面量的操作   通常情况下可以在任何C语言允许使用 char * 指针的地方使用字符串字面量。如: char *p; p= abc; 这个赋值操作不是复制 abc 中的字符,而仅仅是使 p 指向字符串的第一个字符。 字符串变量   一些编程语言为声明字符串提供了特殊的 string 类型。C语言采取了不同的方式:只要保证字符串是以空字符串结尾的,任何一维的字符数组都可以用来存储字符串。如果编写自己的字符串处理函数,请千万注意要正确地处理空字符。   假设需要变量用来存储最多80个字符的字符串。既然字符串会在末尾处需要空字符,那么要声明的变量是含有81个字符的数组。 #define STR_LEN 80 /* 惯用法*/char str[STR_LEN+ 1]; 对宏加一的这种方法是C程序员常用的方式。 初始化字符串变量 char date1[8]= June 14; date1: | J | u | n | e | | 1 | 4 | \0 | char date2[9]= June 14; date2: | J | u | n | e | | 1 | 4 | \0 | \0 | 大体上来说,这种行为与C语言处理数组初始化的方法一致。 字符串变量的声明可以忽略它的长度。这种情况下,编译器会自动计算长度: char date3[]= June 14; 编译器为date3分配8个字符的空间。 字符数组与字符指针一起来比较一下下面两个声明: char date[]= June 14; 它声明date是个字符数组。和这个声明相似的是下面这个声明: char *date= June 14; 它声明date是个指向字符串字面量的指针。 [注意],不能错误地认为上面两种date可以互换。两者之间有着显著的差异: (1) 在声明为数组时,就像任意数组元素一样,可以修改存储在date中的字符。在声明为指针时,date指向字符串字面量。(2) 在声明为数组时,date是数组名。在声明为指针时,date是变量,这个变量可以在程序执行期间指向其他字符串。   如果需要可以修改的字符串,那么就要建立字符数组来存储字符串。这时声明指针变量是不够的。下面的声明使编译器为指针变量分配了足够的内存空间: char*p; 可惜的是,它不为字符串分配空间。在使用p作为字符串之前,必须把p指向字符串数组。一种可能是把p指向已经存在的字符串变量: charstr[STR_LEN+1],*p; p=str; 现在p指向了str的第一个字符,所以可以把p作为字符串使用了。 3. 字符串的读写   3.1 用 printf 函数和 puts 函数写字符串   %s 允许 printf 函数写字符串。如: char str[]= Are we having fun yet?; printf(Value of str: %s\n, str); 如果只显示字符串的一部分,可以用 %.ps。这里的 p 是要显示的字符数量。语句 printf(%.6s\n, str); 会显示出 Are we   C函数库还提供puts函数。 puts(str);      3.2 用 scanf 函数和 gets 函数读字符串   在 scanf 函数调用中,不需要在 str 前添加运算符 。因为 str 是数组名,编译器会自动把它当作指针来处理。调用时,scanf 函数会跳过空白字符,然后读入字符,并且把读入的字符存储到 str 中,知道遇到空白字符为止。scanf 函数始终会在字符串末尾存储一个空字符。用 scanf 函数读入字符串永远不会包含空白字符。因此,scanf 函数通常不会读入一整行输入。换行符会使 scanf 函数停止读入,空格符或制表符也会产生同样的效果。可以参考下面的例子: #inclu

文档评论(0)

aiwendang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档