




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言实训字符串处理 常用的字符串处理函数: 字符串输出函数:puts( ) 字符串输入函数:gets( ) 字符串拷贝函数:strcpy( ) 字符串连接函数:strcat( ) 字符串比较函数:strcmp( ) 字符串长度函数:strlen( ) 字符串大小写转换函数strlwr( )和strupr( ) #include string.h字符串处理函数#include stdio.hputs( )函数字符串输出函数格式:puts(字符串)功能:将指定的字符串输出到标准输出设备可为串常量、字符数组名和有明确指向的字符指针变量名说明: (1) 在输出时遇到0时结束输出并将0作为回车换行(n
2、)处理; (2) 输出的字符串中可以包含转义字符.用scanf输入字符串无此功能gets( )函数字符串输出函数格式:gets(串地址)功能:从键盘上输入一个字符串到指定地址开始的存储空间中。注意:该地址开始的存储空间必须已分配且足够大,以便容纳所输入的字符串说明: (1)输入时以回车键作为字符串输入结束标志,并将该符号转换为字符串结束标志0存入存储单元。 (2)输入的字符串中不可以包含转义字符。可为字符数组名、有明确指向的字符指针或字符数组元素地址strcpy( )函数字符串拷贝函数格式: strcpy(str1,str2)功能:将字符串2(连同结束标志0)拷贝到串1地址所指的存储空间中。字
3、符串地址,可以是字符数组或字符指针变量注意:str1所指的存储空间必须足够大,以便容纳字符串2;如果str1是字符指针变量,要保证str1已经赋值。abcde0000000strcpy( )函数的使用1main( ) char c120=abcde, *c2=123456789; strcpy( c1 , c2 ) ;12345678901230 puts( c1 ); puts( c2 ); 123456789123456789456789c1:C2abcde0000000strcpy( )函数的使用2main( ) char c120=abcde, c210=123; strcpy( c1
4、 , c2 ) ;12300000001230 puts( c1 ); puts( c2 ); 123123c1:c2:例:编程实现strcpy函数的功能#include main( ) char s1=Hello,World!,s215; char *from=s1,*to=s2; while(*from) *to=*from; to+; from+; *to=0; puts(s1); puts(s2); *to+ = *from+; strcmp( )函数字符串比较函数格式:strcmp(串1,串2)功能:比较字符串1和字符串2的大小返回值:返回两个字符串中第一对不同字符的ASCII码值之
5、差。字符串的比较:逐个字符比较;按ASCII码比较;遇到第一个不同的字符或者有一个字符串结束停止。strcmp( abcde , ad )结果:b-d= -2ad0abcde0strcmp( abcde , ab )结果:c-0= 99ab0abcde0strcmp( ab , ab )结果:0-0=0ab0ab0例 编程实现strcmp函数的功能(用字符数组)#include “stdio.h”main() char s120,s220; int i,cmp; gets(s1); gets(s2); for(i=0;s1i!=0&s2i!=0;i+) cmp=s1i-s2i; if(cmp!
6、=0) break; if(cmp=0) cmp=s1i-s2i; printf(“两串比较的结果是:%dn,cmp);for(i=0;s1i!=0|s2i!=0;i+) cmp=s1i-s2i; if(cmp!=0) break; 例 编程实现strcmp函数的功能(用字符指针)#include “stdio.h”main( ) char s120,s220; char *str1=s1,*str2=s2; int cmp; gets(str1); gets(str2); for( ; *str1|*str2; str1+,str2+) cmp=*str1-*str2; if(cmp!=0)
7、 break; printf(“两串比较的结果是:%dn,cmp); strcat( )函数字符串连接函数格式: strcat(str1,str2)功能:将字符串2(连同结束标志0)接到字符串1的后面(0位置开始) 。字符串地址,可以是字符数组或字符指针变量注意:str1所指的存储空间必须足够大,以便容纳连接后的新字符串;如果str1是字符指针变量,要保证str1已经赋值。strcat()函数的使用main( ) char c120=abcde, *c2=12345; strcat( c1 , c2 ) ;123450abcde0000000123450 puts( c1 ); puts( c
8、2 ); abcde1234512345c1:c2例 编程实现strcat函数的功能 j=0定义一维字符数组str1、str2并输入字符串str1、str2当str2j!= 0 输出str1、str2 i+ i=0 str1i= 0 str1i=str2j i+, j+ 当str1i!= 0#include “stdio.h”main() char s1100,s250; int i=0,j=0; printf(“please input s1 and s2:n”); gets(s1); gets(s2); while(s1i!=0) i+; while(s2j!=0) s1i=s2j; i+
9、; j+; s1i=0; puts(s1);数组方法#include “stdio.h” main() char s1100,s250,*p1=s1,*p2=s2; printf(“please input s1 and s2:n”); gets(s1); gets(s2); while(*p1!=0) p1+; for(;*p2!=0;p1+,p2+) *p1=*p2; *p1=0; puts(s1);指针方法strlen( )函数求字符串长度函数格式: strlen(字符串)功能: 求字符串的实际长度,不包括0。返回值:返回整型数据,其大小为字符串中有效字符的个数。strlen( )函数的
10、使用#include string.hmain ( ) char c110=abcdefg ; char *c2=123; printf(%st%dn,c1,strlen(c1); printf(%st%dn,c2,strlen(c2);abcdefg 7123 3例 将小写字母串转换为大写字母串main ( ) char c80 ; int i ; gets(c); puts(c) ; for( i=0 ; ci!=0 ; i+ ) ci = ci - 32 ; puts(c) ; 从键盘上输入一行由小写字母组成的字符串,转换成大写字母输出。istrlen(c)不能用 i80strlwr(
11、)函数大写字母转换成小写字母格式: strlwr(字符串)功能: 将字符串中的大写字母转换成小写字母,其它字符不变strupr( )函数小写字母转换成大写字母格式: strupr(字符串)功能: 将字符串中的小写字母转换大写字母,其它字符不变常用函数介绍复制char*strcpy (char *s1, const char *s2);将字符串s2复制到s1指定的地址char*strncpy (char *s1, const char *s2, size_t len);将s2的前len个字符(字节)复制到s1中指定的地址, 不加0 连接 char*strcat (char *s1, const
12、char *s2);将字符串s2连接到s1尾部char*strncat (char *s1, const char *s2, size_t len);将字符串s2的前len个字符连接到s1尾部, 不加0比较 intstrcmp (const char *s1, const char *s2);比较字符串s1和s2intstrncmp (const char *s1, const char *s2, size_t len);对s1和s2的前len个字符(字节)作比较查找 char*strchr (const char *s, int ch);在s中查找给定字符(字节值)ch第一次出现的位置 ch
13、ar*strrchr (const char *s, int ch);在串s中查找给定字符ch最后一次出现的位置, r表示从串尾开始 char*strstr (const char *s1, const char *s2);在串s1中查找指定字符串s2第一次出现的位置 字符转换所谓字符转换就是将字符按照某种规律转换成对应的字符曾经最难的问题(HDU 1048) 题目描述: 恺撒大帝生活在充满危险和阴谋的时代。恺撤大帝面临最严峻的形势就是如何生存下去,为了生存,他决定设计一种密码。这种密码设计得是如此难以置信的合理,以至于不知道它的原理就无法破译。 你是恺撒军队的一个小队长。你的工作就是对恺撒发
14、布的密文进行解码,然后告诉军头的司令官。加密的规则其实很简单:对原文中的每个字母,转换成字母表后面第5个字母,如原文中的字符为字母A,则密文中对应的字符为F。因为你的工作是解码,所以要将密文文翻译成原文。 ciphertext(密文):ABCDEFGHIJKLMNOPQRSTUVWXYZ plaintext (原文):VWXYZABCDEFGHIJKLMNOPQRSTU 加密时,只有字母字符才按照上述规则进行加密。任何非字母字符保持不变,而且所有享母字符均为大写字母。输入数据:输入文件(非空)最多包含100组数据。每组数据为下面的格式,每组数据之间没有空行,所有的字符为大写。每组数据由3行组成
15、:(1)首行为字符串START;(2)第2行为密文,包含的字符个数大于等于1,小于等于200,表示恺撒发布的密文;(3)第3行为字符串END。最后一组数据后有ENDOFINPUT,表示输入结束。输出描述:对每组数据,输出一行,为你解密出来的原文。输入数据:输入文件一行,包含的字符个数大于等于1,小于等于200,表示恺撒发布的密文;输出描述:输出一行你解密出来的原文。Sample Input NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX Sample OutputIN WAR, EVENTS OF IMPORTANCE
16、 ARE THE RESULT OF TRIVIAL CAUSES 题目分析分析本题针对的大写字母,把每个字母转换成字母表前5个字母,形成环状序列。F转换成AG转换成B,Z转换成U,A、B、C、D、E分别转换成V、W、X、Y、Z。转换公式:ai = (ai-5+65)%26+65;或者ai = (ai+21-65)%26+65;温馨提示:A在ASCII码中是65gets(a);int i = 0;while(ai != 0)if(ai = A & ai = Z)ai = (ai+21-65)%26 + 65;i+;puts(a);回文的判断与处理所谓回文(palindrome)字符串,就是从左
17、向右读和从右向左读结果相同的字符串。判断回文的方法很简单,假设字符串长度为n,只需依次判断字符串中第i个字符与第n-l-i个字符是否相等即可,i=0,1,2,3,n/2。char s1000,*p1, *p2;int i, t = 1;p1 = s;p2 = s+strlen(s)-1;for(i = 0; i strlen(s)/2; i+)if(*p1 != *p2)t = 0; break;p1+;p2-;子串处理字符串中任意一个连续的字符组成的字符序列被称为该字符串的子串。有时,从字符串中抽取不连续的字符所组成的字符序列,也可以看成是字符串的子串。字符串的包含问题题目描述: 给定两个字
18、符串s和t,判断s是否是t的子串,也就是说,是否能通过从t中去掉一些字符,使得剩余的字符构成的字符串为s。 输入描述: 输入文件占一行,为两个字符串s和t,这两个字符串是由大小写字母字符构成的,两个字符串之间用空格隔开。 输出描述:对输入数据,判断s是否为t的子串。是就输出“Yes”,不是就输出“No”样例输入: person compression abc babce样例输出:NoYes题目分析对字符串s的第0个字符s0,在字符串t中进行查找,假设查找到,其第一次出现的位置为t0;在字符串t的t0下一个位置继续查找s1,假设查找到,其(第一次出现的)位置为t1;在字符串t的t1下一个位置继续查找s2。如果都能查找到s中的每个字符,则s是t的“子串”;否则如果s中后面某些字符在t中没有找到对应的字符,则s不是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5《守株待兔》教学设计-2024-2025学年语文三年级下册统编版
- 8《大家的“朋友”》教学设计-2023-2024学年道德与法治三年级下册统编版
- 户外体操活动的准备与配合培训
- 02 姓氏歌 教学设计-2024-2025学年语文一年级下册统编版
- 治安管理法律
- 边坡作业安全教育培训
- 邮政物流文员培训
- Unit 1 My School 第四课时(教学设计)-2024-2025学年人教PEP版英语四年级下册
- Unit 4 Chinese and English names(教学设计)-2024-2025学年冀教版(2024)初中英语七年级上册
- 营销考核管理办法解读
- 2024-2030年中国柔性OLED面板行业市场深度调研及发展趋势与投资前景研究报告
- 针刺止痛的神经机制研究
- 300MW300MWh源网荷储一体化储能电站项目可行性研究报告模板-立项备案
- 激光雷达产品商业计划书
- 血液透析指征与急诊透析指征
- 送温暖活动困难职工帮扶申请表
- 10S505 柔性接口给水管道支墩
- DL∕T 802.1-2023 电力电缆导管技术条件 第1部分:总则
- 网课智慧树知道《老年医学概论(浙江大学)》章节测试答案
- 《新零售管理实务》期末考试复习题库(含答案)
- DZ∕T 0227-2010 地质岩心钻探规程(正式版)
评论
0/150
提交评论