为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

第10讲 字符与字符串

2012-04-12 48页 ppt 354KB 29阅读

用户头像

is_215156

暂无简介

举报
第10讲 字符与字符串null第10讲 字符与字符串第10讲 字符与字符串演讲人:马玉军 e-mail:jtclass@126.com课程安排课程安排字符测试函数 字符串转换函数 字符串比较函数 字符串复制函数 字符串清理与填充函数 字符串查找函数 字符串连接于分割函数字符测试函数 字符测试函数 在程序设计中经常需要对字符和字符串进行处理,C语言中内置了许多与字符和字符串操作相关的库函数,本章将分别介绍字符测试函数,字符串转换函数,字符串比较函数,字符串复制函数,字符串清理与填充函数,字符串查找函数以及字符串的连接与分割函数。 所谓字符测试...
第10讲 字符与字符串
null第10讲 字符与字符串第10讲 字符与字符串演讲人:马玉军 e-mail:jtclass@126.com课程安排课程安排字符测试函数 字符串转换函数 字符串比较函数 字符串复制函数 字符串清理与填充函数 字符串查找函数 字符串连接于分割函数字符测试函数 字符测试函数 在程序设计中经常需要对字符和字符串进行处理,C语言中内置了许多与字符和字符串操作相关的库函数,本章将分别介绍字符测试函数,字符串转换函数,字符串比较函数,字符串复制函数,字符串清理与填充函数,字符串查找函数以及字符串的连接与分割函数。 所谓字符测试,是指对一个字符进行大小写、是否可以打印、是否可以显示、是否是数字等方面进行判断。C程序提供了丰富的字符测试函数,这些函数原型在头文件“ctype.h”中定义,使用这些函数之前需要包含此头文件。 数字或字母测试函数isalnum:函数isalnum的作用,是检查参数c是否为英文字母或阿拉伯数字。若参数c是一个字母或数字,则返回真值,否则返回为假。这个函数包含于头文件“ctype.h”中,使用方法如下所示。 01 int isalnum (int c) 提示:参数c是一个字符变量。但在C程序中,字符变量等同于这个变量所对应的ASCII码的值,所以参数也可以是一个ASCII码值的整形数值。字符测试函数字符测试函数字符测试函数字符测试函数字母测试函数isalpha:函数isalpha可以测试一个字符是不是英文字母。这个函数的使用方法如下所示。 01 int isalpha (int c) 函数的参数c是一个字母或是示一个字母的ASCII码值。如果这个参数是一个英文字母,则返回真值,否则返回为假。这里所说的英文字母,指的是26个大写字母和26个小写字母,而不包括其它的任何符号。下面的程序,是对一个字符数组中的每一个字符进行测试,如果是字母则输出结果。字符测试函数字符测试函数字符测试函数字符测试函数可打印字符测试函数isgraph:所谓可打印字符,指的是这个字符可以在屏幕上显示,或是可以在打印机中打印出这个字符。ASCII码中的有些字符,是用于格式控制或特殊作用,是不可以打印的。可打印字符包括字母、数字、标点符号、键盘上可打印符号等。函数isgraphis的作用是判断一个字符是否是可打印字符,使用方法可下所示。 01 int isgraph (int c) 参数c是一个字符,或是表示一个字符的ASCII码值。如果参数是一个可打印字符,则返回一个真值,则否返回为假。下面的代码,是使用这个函数判断字符可否打印的实例。字符测试函数字符测试函数字符测试函数字符测试函数测试大小写字母函数islower和isupper:函数lower用于测试一个字符是不是小写字符,isupper用于测试一个字符是不是大写字符。这两个函数的使用方法如下所示。 01 int islower(int c) 02 int isupper(int c) 在函数islower中,参数c是一个字符,如果这个参数是一个小写字母,函数就返回真值,否则返回为假。函数isupper的用法与islower相似。下面是一个判断字符大小写的实例,判断一个字符数组中有哪些小写字母与大写字母。字符测试函数字符测试函数字符测试函数字符测试函数测试是否是数字isxdigit:函数isxdigit可以测试一个字母是不是0到9之间的阿拉伯数字。这个函数的使用方法如下所示。 01 int isdigit(int c) 这个函数的参数c是一个字符,或者是ASCII码表中的一个编号。函数对这个字符进行判断,如果是一个阿拉伯数字则返回一个真假,否则返回值为假。下面是一个isxdigit函数的使用实例,对判断一个字符数组中的字符,如果是数字则输出结果。程序的代码如下所示。字符测试函数字符测试函数测试字符是否为符号函数ispunct:函数ispunct可以测试一个字符是否为标点符号或特殊符号。这个函数的使用方法如下所示。 01 int ispunct(int c) 函数的参数c是需要测试的字符,或是ASCII码表中用来表示这个字符的编号。函数对这个字符进行测试,如果是一个标点符号或特殊字符,则返回一个真值。否则返回值为假。下面是这个函数的使用实例,对一个字符数组中的特殊字符进行测试并输出。字符测试函数字符测试函数其它字符测试函数:除了上面讲解的这些字符测试函数以外,还有空格测试、可否打印测试、控制字符测试等函数。这些函数的使用方法和上面这些函数的使用方法是相似的。如果需要对程序中的字符进行类型测试,需要在程序的最前面包含头文件ctype.h。这些函数的功能与使用方法如表10.1所示。字符串转换函数字符串转换函数所谓字符串的转换,指的是把字符串转换成整型、浮点型等数据类型,或者进行大小写转换。 在C程序中,并没有字符串这一数据类型。这里所说的字串,实际上是一个字符数组。字符串通常是保存在一个字符数组中的,可以用这个数组的名称或这个数组的头指针定义一个字符串。 可以用下面的方法来定义一个字符串。 01 char a[50]; 02 char b[]; 可以用下面的方法对字符串进行赋值。 01 char a[50]=”asdfgh”; 02 char b[]=”ASDFG”; 也可以真接定义一个指向定符的指针,对这个指针赋值为一个字符串,这种方法如下所示。 01 char *a=”asdfg”; 02 char *b; 03 *b=”ASDFG”; 但是下面这种方法,先定义一个数组,然后用另一个语句赋值为字符串,这种方法是错误的。 01 char a[50]; 02 a=”asdfg”; 如果需要在数组定义以后,在后面的程序中进行赋值,可以用键盘输入的方法,代码如下所示。 01 char a[50]; 02 scanf(“%s”,a);字符串转换函数字符串转换函数字符串转换函数字符串转换函数字符串转换成浮点型函数atof:函数atof的作用是将一个字符串转换成一个浮点型变量。函数的使用方法如下所示。 01 double atof(char *nptr); 函数的参数*nptr是一个字符串,函数可以把字符串转换成一个浮点型数,然后返回。 在处理字符串时,跳过前面的空格,遇上数字或正负符号才开始做转换,一直到字符串的结尾。 如果字符串中有字母或其他其它符号,函数会去除这个字符和这个字符以后的内容。 下面是这一个函数的使用实例,需要注意的是字符串中字母的处理情况。字符串转换函数字符串转换函数字符串转换函数字符串转换函数字符串转换成整型函数atoi:函数atoi的作用是将一个字符串转换成一个整型数,使用方法如下所示。 01 int atoi(char *nptr); 参数nptr是一个字符串的指针。函数会扫描这个字符串,如果字符串前面有空格则跳过空格。 从每一个字符直到字符串结束,如果字符串中有其它字符,则去除这个字符与这个字符以后的内容。 如果字符串中有小数点,则去除小数点以后的内容。 下面是使用atoi函数将字符串转换成整型变量的实例。字符串转换函数字符串转换函数字符串转换函数字符串转换函数字符串转换成长整型函数atol:函数atol的作用是将一个字符串转换成长整型数,使用方法如下所示。 01 long atol(char *nptr); 参数nprt字符串的指针,函数atol会把这个字符串转换成一个长整型数返回。 对0和字母的处理方式与10.3.2小节中的atof函数是相同的。 下面是使用函数atol将一个字符串转换成整型数的实例。字符串转换函数字符串转换函数字符串转换函数字符串转换函数将浮点型转换成字符串函数ecvt:函数ecvt可以将一个浮点型数转换成一个字符串,这个函数的使用方法如下所示。 01 char *ecvt(double number,int ndigits,int *decpt,int *sign) 这个函数参数与返回值的作用如下所示。 number:是一个double型的浮点数,函数需要对这个浮点数进行转换。 ndigits:在浮点数中从左向右取的位数。 decpt:是一个整型数的指针,显示浮点数中小数点在第几位。 sign:是一个整型数的指针。代表数值的正与负,如果为正则返回0,否则返回1。 函数的返回值是一个指向字符串的指针。 下面的代码,是使用函数ecvt将浮点型数转换成整型的实例。字符串转换函数字符串转换函数字符串转换函数字符串转换函数字母的大写小转换函数tolower和toupper:函数tolower可以把一个大写字母转换成小写字母,函数toupper可以把一个小写字母转换成大写字母。这两个函数的使用方法如下所示。 01 int tolower(int c) 02 int toupper(int c) 参数c是需要进行转换的字母。 函数tolower可以把一个大写字母转换成小写字母。如果这个字母是小写字母或其它符号,则不进行转换直接返回。返回值是一个字符。 下面的实例是用这两个函数进行大小写转换实例。字符串转换函数字符串转换函数字符串转换函数字符串转换函数其它字符串转换函数:除了上面的字符串转换函数以外,还有二进制转换、十六进制转换等函数。这些函数的使用方法和上面这些函数的使用方法是相似的。字符串比较函数字符串比较函数字符串比较指的是比较两个字符串的大小、是否相同等操作。常用函数有bcmp、memcmp、strcmp、strncasecmp等。 字符串比较函数bcmp:函数bcmp用来比较两个字符串的前n个字节是否相同。如果相同则返回0值,否则返回非0值。函数的使用方法如下所示。 01 int bcmp ( const void *s1,const void * s2,int n); 注意:返回的0值作为if判断的条件时,相当于假,非0值为真。 参数s1与s2是需要进行内容比较的两个字符串,n是需要比较的两个字符串前n个字符。 下面是这个函数的使用实例。程序中先定义两个字符串数组,然后比较前几个字节是否相同并且输出结果。字符串比较函数字符串比较函数字符串比较函数字符串比较函数字符串大小比较函数memcmp:函数memcmp用来比较两个字符串的大小是否相同,并具返回第1个不相同字符的差值。函数的使用方法如下所示。 01 int memcmp (const void *s1,const void *s2,size_t n) 参数s1与s2是需要进行比较的两个字符串,n是需要进行比较的前n个字符。这里的字符串大小比较是以ASCII码表上的顺序来决定的。member函数首先将字符串s1第一个字符值减去s2第一个字符的值,若差为0则再继续比较下个字符,差值不为0则返回这个差值。例如字值串“sA”与“sb”,第1个字母相同,则比较下一个字母。字符’A(65)’和’b(98)’的差值是-33,函数则返回-33。如果两个字符串的前n个字母相同,函数返回0,字符串s1小于s2则返回小于0的值。s1大于s2则返回大于0的值。 下面是使用这个函数进行字符串比较的实例。字符串比较函数字符串比较函数字符串比较函数字符串比较函数忽略大小写比较字符串函数strncasecmp:函数strncasecmp可以忽略大小写比较两个字符串,这个函数的使用方法如下所示。 01 int strncasecmp(const char *s1,const char *s2,size_t n) 注意:此函数的参数与作用与上一小节中的memcmp函数是相同的,不同点是比较字母时忽略字母的大小写差异。 这个函数的使用实例如下所示。字符串复制函数字符串复制函数字符串复制指的是将一个字符串的全部或其中的若干字符,写入到另一个字符串中。本节将讲述字符串复制的相关操作,可以进行字符串复制的函数主要用bcopy、memccpy、strcpy、strncpy等。 字符串复制函数bcopy:函数bcopy的作用是将一个字符串的前n个字符复制到另一个字符串中,使用方法如下所示。 01 void bcopy ( const void *src,void *dest ,int n); 函数的参数src是需要复制字符的字符串,dest是复制到的字符串。n表示需要在字符串中复制的字符数目。函数会改变字符串dest的值,没有返回值。下面是这个函数的使用实例。字符串复制函数字符串复制函数字符串复制函数memccpy:函数memccpy可以将一个字符串中的前n个字节复制到另一个函数中。与函数bcopy不同的是,memccpy可以检查字符串里是不是有某一个字符。该函数的使用方法如下所示。 01 void * memccpy(void *dest, const void * src, int c,size_t n) 函数参数中的原字符串与目标字符串,与函数bcopy的参数相反。dest是复制的目录字符串的指针,src需要复制的字符串指针。c是需要在字符串dest中查找值为c的字符。如果查找到这个字符,则返回下一个字符的指针。n是需要在字符串src中复制的字符的个数。 下面的程序是使用这个函数进行字符串替换的实例。字符串复制函数字符串复制函数字符串复制函数字符串复制函数复制字符串函数strcpy:函数strcpy可以将一个字符串复制到另一个字符串,函数的使用方法如下所示。 01 char *strcpy(char *dest,const char *src) 在参数列表中,dest是复制字符串的目标指针,src是原字符串指针。函数将返回字符串dest的指针。 注意:使用这个函数时,字符串dest需要有足够的空间来存储字符串src,否则将会发生溢出错误。 使用这个函数进行字符串复制的函数如下所示。字符串复制函数字符串复制函数字符串复制函数strncpy:函数strncpy可以将一个字符串中的若干个字符复制到另一个字符串中,该函数的使用方法如下所示。 01 char * strncpy(char *dest,const char *src,size_t n); 在参数列表中,dest是目标字符串的指针,src是需要复制的字符串的指针。n是需要在字符串src中复制的字符个数。返回值是字符串dest的头指针。下面是使用strncpy进行字符串复制的实例。字符串的清理与填充字符串的清理与填充字符串的清理指的是删除一个字符串的部分内容,将所有字节写为NULL。字符串填充指的是把一个字符串的部分字节写为某一个字符。 字符串清理函数bzero:函数bzero的主要作用是将字符串中的部分字节写为0,即写入NULL值。函数的使用方法如下所示。 01 void bzero(void *s,int n) 参数列表中,s表示一个字符串的头指针。n表示需要在字符串中清理前n个字符。函数没有返回址,操作时已经改变了字符串s的值。下面是bzero的使用实例。字符串的清理与填充字符串的清理与填充字符串填充函数memset:函数memset的作用是将一个字符的前n个字符填充为某一个字符。该函数的使用方法如下所示。 01 void * memset (void *s ,int c, size_t n) 参数列表中,s指的是需要处理的字符串头指针。c是需要写入的字符,n是从字符串第1个字符开始需要填充的多少个字符。函数没有返回值。下面是这个函数的使用实例。字符串查找 字符串查找 字符串查找指的是在一个字符中检索另外一个字符串或字符。如果发现这个字符或字符串则返回这一个字符的指针。 字符查找函数index与rindex:函数index用来在字符串中找出第一个需要查找字符的出现位置,然后将该字符地址返回。rindex的使用方法与index相似,但作用是找出字符串中最后一次某字符的出现位置。这两个函数的使用方法如下所示。 01 char *index( const char *s, int c); 02 char *rindex( const char *s, int c); 参数列表中,s表示一个字符串的头指针。c表示需要在字符串s里面查找的字符。返回值是一个指针,指向找到的这个字符的地址。下面是这两个函数的使用实例。 字符串查找 字符串查找 字符串查找字符串查找字符查找函数memchr:函数memchr的作用,是在一个字符串的前n个字符中查找另一个字符,返回这个字符的指针地址。函数的使用方法如下所示。 01 void * memchr(const void *s,int c,size_t n) 参数列表中,s是需要查找的字符串,c是需要查找的字符。n表示在字符串s中的前n个字符里查找。如果找到了这个字符,则会返回这个字符的指针,如果没有这个字符,则返回0。下面这函数memchr的使用实例。字符串查找字符串查找字符查找函数strchr与strrchr:函数strchr的作用是在一个字符串中查找另一个字符第一次出现的位置。函数strrchr的作用是在一个字符串中查找一个字符最后一次出现的位置。这两个函数的使用方法如下所示。 01 char * strchr (const char *s,int c) 02 char * strrchr (const char *s,int c) 参数列表中,s是需要查找的字符串头指针,c是需要查找的字符。如果查找到这个字符,将返回这个字符指针,如果没有找到这个字符则返回0。 下面是这两个函数的使用实例。字符串查找字符串查找字符串的连接与分割字符串的连接与分割字符串的连接指的是将一个字符串添加到另一个字符串的后面。字符串的分割指的是把一个字符串按照一定的标记切分成多个字符串。 字符串连接函数strcat:函数strcat的作用,是将一个字符串连接到另一个字符串后面。下面是这个函数的使用方法。 01 char *strcat (char *dest,const char *src) 参数列表中,dest和src是两个字符串的头指针。函数会把字符串src的内容添加到字符串dest上面,并返回指针dest。 注意:字符串dest需要有足够的空间来存储字符串src的数据。下面是这个函数的使用实例。字符串的连接与分割字符串的连接与分割字符串的连接与分割字符串的连接与分割字符串分割函数strtok:函数strtok的作用,是将字符串分割成一个个片段。函数的使用方法如下所示。 01 char * strtok(char *s,const char *delim); 参数列表中,s是需要分割的字符串,delim为分割字符串的标记。在第一次调用时,strtok在参数s字符串中发现到参数delim的分割字符时,将该字符改为NULL字符。然后返回更改以后的字符串。再次调用时,将参数s设置成NULL。每次调用成功则返回下一个分割后的字符串指针。下面是这个函数的使用实例,在一个字符串中以a为标记,将字符串分割为多个字符串然后输出。字符串的连接与分割字符串的连接与分割性格决定命运, 专注成就人生性格决定命运, 专注成就人生
/
本文档为【第10讲 字符与字符串】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索