C语言字符相关部分内容小结.doc_第1页
C语言字符相关部分内容小结.doc_第2页
C语言字符相关部分内容小结.doc_第3页
C语言字符相关部分内容小结.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言字符相关部分内容小结发布于:2012-11-14 16:51浏览量: 132 很多初涉编程的同学,在有些知识点上不够系统化或者说不能够将知识点联系起来,甚至对有些知识点有妖魔化的趋势,先说一下,这点是完全没有必要的,对于程序的编写,我个人认为这是一件很有美感的事情,所以不必预先给自己太大的心理压力去进行这方面的学习与工作。 今天就字符部分相关的一些知识点作一个小结。一、 字符及由字符构造出来的一些类型的概念和特点。 a) 字符:字符是由单引号引起来的单个的字符或转义字符。 b) 字符串:字符串是由双绰号引起来的N个字符序列,这里的N可以是1个,可以是多个,也可以为0,也就是一个空串。概念的理解很重要,是区分不同类型的基准。二、 存储 字符的存储实质上存储的是其相应的ANCII码。 而ANCII码分为三部分,第一部分共32个,一般且来通讯或作为控制之用,有些可以显示于屏幕上,有些则无法直接显示在屏幕上,但能看到其效果;第二部分共96个,用来表示阿拉伯数字、英文字母大小写及底线括号等符号;第三部分共128个,为扩充字符,用来表示框线、音标及其他非英语系的字母。 由上述可见,字符类型的特殊性在于任何的操作及控制如果放在字符类型中都是有效的录入,意味着要进行字符类相关操作的时候要进行更加细心和周全的考虑和控制。 基本类型中并没有字符串类型,需要我们自行去构造,所以对于字符串的存储我们需要借助于数组,也就是利用字符数组去存储字符串。若以字符串常量的方式给一个字符数组赋值,如char str=”hello”,则系统在进行存储时,存储h,e,l,l,o这五个字符外,会多开辟一个空间存储0,用以作为一个串的结束标志,这也是我们通常在对一个串进行操作时所利用的结束条件三、 输入与输出 字符的输入与输出可以使用标准输入输出函数scanf(),printf(),利用上述函数中的%c格式进行输入与输出,还可以利用针对字符的输入输出函数putchar(),getchar()。 字符数组部分的输入与输出可以分两种方式:一种是采用单个字符方式,即把字符串中的每个元素都看作一个字符,进行单个输入或输出,可以借助上述字符的输入与输出,这里就需要用到循环来进行单个字符的控制,或者采用标准输入输出中的%s针对字符串进行操作;另外可以使用专门针对字符串的输入输出函数gets(),puts()。注意:1)在字符的操作中,刚刚解释过了任何的输入及控制都会被当作有效的字符录入,所以如果控制不周全,则在终端上进行的回车,TAB键等等的操作都会当作有效的录入,这也就需要我们在对程序进行控制的时候注意该方面的问题。2)对于字符串部分如果采用使用单个字符赋值的方式,如char str5=h,e,l,l,o,系统会存储五个字符,这时在控制输出时若用scanf的%s格式进行控制,或用puts进行控制输出的话会出现输出乱码的情况,原因是由于上述两种方式作输出时,会从字符数组的起始地址开始,一直向后输出,直到遇到结束标志0为止,所以在上述赋值方式中会出错。若使用循环控制5次输出,每次输出单个字符,则不会出错,也就是说程序有时无法获得预想的效果,不一定是逻辑和语法的问题,也可能是前后的控制不到位而出现输出的差错。另外scanf中的%s格式遇空格或回车时结束,若有如下部分程序段:int main()char a15; scanf(%s,a,b,c); puts(a); 若终端输入为how are you,则a串只能获得how.四、字符数组部分相关函数 字符数组部分相关字符函数简单说一下:1、strlen(str1):返回值为字符串的实际长度,这个实际长度是不包含0的,区别于sizeof,其测量的为字符数组在内在中实际所占的字节数。2、 strcat(str1,str2):连接两个字符串,实现过程:str1的0取消,str2连接进去,最后加一个0作为结束标志,3、 strcpy(str1,str2):将str2拷贝到str1中去,前提条件str1必须足够大,拷贝时将0一同拷贝,在此强调,字符串的赋值不能采用普通变量式,即str2 = str1写法是错误的,必须使用函数进行两个字符串的拷贝。4、 strcmp(str1,str2):将str1与str2中的字符进行逐个比较,直到碰到不同的字符或0为止,哪个的ANSII码值大就判断为哪个字符串较大,返回值为正值负值和0来表示两个串的大小关系,即若对两个字符串需要进行判断时 if(str str)写法是错误的另外需要注意的是:上述函数的代码实现的考察也是在进行一些技术面试时常会遇到的问题。考察以下几点:字符串要以0作为结尾;对数组越界把握的敏感程度;对项目整体的控制细节如参数的传递,形参的设置及返回值的设置。看一个例题,有一定的代表性,题目本身并不难,但如果字符相关内容不太熟悉或对标志性变量不熟悉,可以以此例为着手点。从终端输入一行字符,统计其中单词个数。(该问题主要练习标志性变量的使用,另外如果该问题用单个字符来进行实现也可以,但会走一些弯路,算法及实现上并不简便,所以我们在这里用字符串来进行解决),示例代码如下:int main() char string80; int i,num = 0 ,word = 0; /num为计数变量,word为标志性变量 char c; gets(string); /从终端输入字符串 for(i = 0 ; (c = stringi) != 0 ; i+) /依次遍历串中的每个字符,直到0为止 if(c = ) /若当前遍历的字符为空格word = 0; /标志

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论