设计一个字符串子串删除函数 将结果子串指针返回 用主程序验证
2017-12-08 09:48
1101 查看
#include <stdio.h>
#include <string.h>
#include<malloc.h>
#include<stdlib.h>
char *delete(char *a,char *b)
{
char *q;
int x=strlen(b);//strlen求字符串长度
while((q=strstr(a,b))!=NULL)
//strstr在串中查找指定字符串b在字符串a在的第一次出现的位置
//如果查找不到,则返回NULL
{
strcpy(q,q+x);//strcvpy串拷贝
}
return a;//返回一个指针
}
int main()
{
char *str,*s;
str=(char *)malloc(100*sizeof(char));
s=(char *)malloc(10*sizeof(char));
gets(str);//从键盘输入两个字符串
gets(s);
char *st=delete(str,s);//接收delete函数传来的指针地址
printf("%s %p\n",st,st);//%p输出指针所在的地址
free(str);//free函数释放分配的内存
free(s);
free(st);
return 0;
}
还有一个代码
#include<stdio.h>
#include<string.h>
char *delete(char *src, const char *sub)//const函数体内修饰局部变量
{
char *st = src, *s1 = NULL;
const char *s2 = NULL;
while (*st&& *sub)
{
s1 = st;
s2 = sub;
while (*s1 && *s2 &&!(*s1 - *s2))//
{
s1++;
s2++;
}
if (!*s2)
{
while (*st++=*s1++);
st = src;
}
st++;
}
return (src);
}
int main()
{
char s1[1000];
char s2[1000];
gets(s1);
gets(s2);
printf("result:%s\r\n", delete(s1, s2));
system("pause");
return 0;
}
#include <string.h>
#include<malloc.h>
#include<stdlib.h>
char *delete(char *a,char *b)
{
char *q;
int x=strlen(b);//strlen求字符串长度
while((q=strstr(a,b))!=NULL)
//strstr在串中查找指定字符串b在字符串a在的第一次出现的位置
//如果查找不到,则返回NULL
{
strcpy(q,q+x);//strcvpy串拷贝
}
return a;//返回一个指针
}
int main()
{
char *str,*s;
str=(char *)malloc(100*sizeof(char));
s=(char *)malloc(10*sizeof(char));
gets(str);//从键盘输入两个字符串
gets(s);
char *st=delete(str,s);//接收delete函数传来的指针地址
printf("%s %p\n",st,st);//%p输出指针所在的地址
free(str);//free函数释放分配的内存
free(s);
free(st);
return 0;
}
还有一个代码
#include<stdio.h>
#include<string.h>
char *delete(char *src, const char *sub)//const函数体内修饰局部变量
{
char *st = src, *s1 = NULL;
const char *s2 = NULL;
while (*st&& *sub)
{
s1 = st;
s2 = sub;
while (*s1 && *s2 &&!(*s1 - *s2))//
{
s1++;
s2++;
}
if (!*s2)
{
while (*st++=*s1++);
st = src;
}
st++;
}
return (src);
}
int main()
{
char s1[1000];
char s2[1000];
gets(s1);
gets(s2);
printf("result:%s\r\n", delete(s1, s2));
system("pause");
return 0;
}
相关文章推荐
- 设计函数返回一个数组中所有元素被第一个元素除的结果
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 编写一个函数,实现把C/C++程序代码中的注释去掉,并把结果返回。
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 设计一个程序,从键盘上输入若干字符串,利用算法库中的查找函数对给定的字符串进行查找,将查找后的结果输出
- 问题:求两个字符串的最长公共子串。 要求:输入两个字符串,输出它们的最长公共子串,包括长度。 设计: 设计一个类 String,包括一个 len(字符串长度)和字符串指针 s。另有如下成员函数: ·
- 一个小程序验证getpagesize函数返回值的大小
- 如果字符串的一个子串(其长度大于 1)的各个字符均相同,则称之为等值子串。试设计一算法,求出串S中的最大等值子串 函数返回最大等值子串的长度,如果没有则返回1。 例如: 若S= “abc123abc1
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
- 接受int形参(double,,等等)返回int(...);并且一个vector对象保存指向这些函数的指针;进行加减乘除;输出结果
- 写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。
- 用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数
- 今天开始学Java 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
- 申明一个函数指针,并且该函数的返回值也是一个函数指针 -- 示例代码
- 如何使用指针从函数返回一个数组。
- 实现函数 makeClosures,调用之后满足如下条件: 1、返回一个函数数组 result,长度与 arr 相同 2、运行 result 中第 i 个函数,即 result[i](),结果与 fn
- 习题 8.19(1) 编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间。
- 申明一个函数指针,并且该函数的返回值也是一个函数指针 -- 示例代码
- 9.4 编写一个程序,通过执行结果分析在引用类对象时是否执行类的构造函数与析构 函数。