C语言字符串操作(一)
来源:互联网 发布:淘宝窗帘上门安装服务 编辑:程序博客网 时间:2024/06/05 17:27
对一个字符串重新排列,字母排在前面,数字排在后面,并不改变原来字母之间以及数字之间的字符顺序。
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define N 30
- /***********************************************
- *函数名称: fun
- *创建时间: 2010.12.5
- *描 述: 对一个字符串重新排列,字母排在前面,数字排在后面,并不改变原来字母之间以及数字之间的字符顺序。
- *参 数: char * s,int *m
- *返 回 值: chLetter(数组chLetter[]的首元素地址)
- *局部变量: char chLetter[N];
- * char chNumber[N];
- * int i,j,k;
- ************************************************/
- char * fun(char * s,int *m) //参数m是通过调试才想到的
- {
- char chLetter[N]; //用来存放字母
- char chNumber[N]; //用来存放数字
- int i,j,k;
- i=0; //初始化
- j=0; //j用来记录字母的个数
- k=0; //k用来记录数字的个数
- for (i=0; i<N; i++)
- {
- if (s[i] >= 'A' && s[i] <= 'Z' //将字母存入chLetter[]
- || s[i] >= 'a' && s[i] <= 'z')
- {
- chLetter[j]=s[i];
- j++;
- }
- if (s[i] >= '0' && s[i] <='9') //将数字存入chNumber[]
- {
- chNumber[k]=s[i];
- k++;
- }
- }
- chLetter[j]='';
- chNumber[k]='';
- *m=j+k; //用来返回最后输入和输出时字符的个数
- strcat(chLetter,chNumber);
- return chLetter;
- }
- //主函数
- void main()
- {
- char s[N];
- int i;
- int m;
- char *p;
- p=NULL;
- printf("请输入字符串(30字符以内):n");
- scanf("%s",s);
- p=fun(s,&m); //刚开始没定义出这个m来现限制指针p所指数组的长度就出现了后面两个字符乱码
- for (i=0; i<m; i++) //将返回的值复制给数组以待输出
- {
- s[i]=p[i];
- }
- printf("结果为:");
- for (i=0; i<m; i++) //输出结果
- {
- printf("%c",s[i]);
- }
- printf("n");
- }
将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换为t2所指字符串。
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define N 30 //s所指字符串的最大长度
- #define T 2 //t1和t2所指字符串的长度
- /***********************************************
- *函数名称: fun
- *创建时间: 2010.12.5
- *描 述: 将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换为t2所指字符串
- *参 数: char * s,char * t1, char * t2,int *m
- *返 回 值: w(数组w[]的首元素地址)
- *局部变量: char w[N];
- * char temp[T];
- * char t1temp[T];
- * int i,j,k,l;
- ************************************************/
- char * fun(char * s,char * t1, char * t2,int *m) //m的作用和第一题一样,没m最后两个字符会乱码(想寻求其他方法)
- {
- char w[N]; //用来存放处理后的字符串
- char temp[T]; //用来存放从s所指字符串中截取的子串
- char t1temp[T]; //用来存放t1所指字符串
- int i,j,k,l;
- //向t1temp中存入t1所指字符串
- for (i=0; i<T;i++)
- {
- t1temp[i]=t1[i];
- }
- t1temp[T]='';
- //求m所指的值
- for (i=0;i<N;i++)
- {
- if (s[i]=='')
- {
- *m=i;
- }
- }
- //寻找相同时的最后一个字符的下标
- for (i=0; i<N; i++)
- {
- l=0;
- for (j=i; j<(i+T); j++,l++) //截取长度为T的子串存到temp[]中
- {
- temp[l]=s[j];
- }
- temp[T]='';
- if (strcmp(t1temp,temp) == 0)
- {
- k=i; //k记录相同时的最后一个字符的下标
- }
- }
- for (i=0; i<N; i++) //赋值给w[]
- {
- j=0;
- if (i>=k && i<(k+T)) //在找到的k点处开始换值
- {
- w[i]=t2[j]; //换值
- j++;
- }
- else
- {
- w[i]=s[i];
- }
- }
- return w;
- }
- //主函数
- void main()
- {
- char s[N];
- char t1[T];
- char t2[T];
- int i;
- int m;
- char *p;
- p=NULL;
- printf("请输入字符串(20字符以内):");
- scanf("%s",s);
- printf("请输入将要被替换的子字符串(仅限两个字符):");
- scanf("%s",t1);
- printf("请输入将要用来替换的字字符串(仅限两个字符):");
- scanf("%s",t2);
- p=fun(s,t1,t2,&m);
- for (i=0; i<m; i++) //将返回的值复制给数组以待输出
- {
- s[i]=p[i];
- }
- printf("结果为:");
- for (i=0; i<m; i++) //输出结果
- {
- printf("%c",s[i]);
- }
- printf("n");
- }
将s所指的字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define N 30
- /***********************************************
- *函数名称: fun
- *创建时间: 2010.12.6
- *描 述: 将s所指的字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
- *参 数: char * s,int * m
- *返 回 值: return t,(t为指向数组的指针)
- *局部变量: char * t;
- * char temp[N];
- * int i,j=0;
- ************************************************/
- char * fun(char * s,int * m)
- {
- char * t;
- char temp[N]; //临时的数组,用来存放t所指的数组
- int i,j=0;
- t=temp;
- for (i=0; i<N; i++)
- {
- if (s[i]%2==0 )
- {
- temp[j]=s[i]; //如果是偶数,赋值给t所指的数组
- j++;
- if (s[i]=='') //找到m的值先要找出输入了多少个字符
- {
- break;
- }
- }
- }
- *m=j; //找到m的值即输出结果的长度
- t[j]='';
- return t;
- }
- //主函数
- void main()
- {
- char s[N];
- int i;
- int m;
- char *p;
- p=NULL;
- printf("请输入字符串(30字符以内):n");
- scanf("%s",s);
- p=fun(s,&m); //刚开始没定义出这个m来现限制指针p所指数组的长度就出现了后面两个字符乱码
- for (i=0; i<m; i++) //将返回的值复制给数组以待输出
- {
- s[i]=p[i];
- }
- printf("结果为:");
- for (i=0; i<m; i++) //输出结果
- {
- printf("%c",s[i]);
- }
- printf("n");
- }
0 0
- C语言字符串操作(一)
- 字符串操作(C语言 C++)
- 字符串操作--c语言
- C语言字符串操作
- C语言 -- 字符串操作
- C语言字符串操作
- C语言字符串操作
- C语言字符串操作
- C语言字符串操作
- C语言字符串操作
- C语言字符串操作
- C语言字符串操作
- C语言字符串操作
- C语言字符串操作
- c语言字符串操作
- c语言-字符串操作
- C语言字符串操作
- c语言字符串操作
- 待我代码编完,娶你可否(三)
- Android 调试 自测工具01 (Hugo 、Timber 、Scalpel )
- 骨骼动画详解-Cocos Studio
- 剑指offer--按之字形顺序打印二叉树
- VMware虚拟机安装Win8系统详细教程
- C语言字符串操作(一)
- 2015-4-17,编程之美-hihoCoder-2月29日解答
- 【二毛分享】利为汇六天让你学会SEO技术,包含利为汇YY视频教程
- eclipse添加logcat
- PHP通过系统命令执行Python脚本
- [ubuntu14.04] error: diskfilter writes are not supported
- 【二毛分享】叶胜超seo基础到实战教程(基础-中级-高级)
- ZOJ 2833 Friendship 并查集
- 谈谈每天的SEO工作日志怎么写?