zoukankan      html  css  js  c++  java
  • 指针函数

    题目:编写一个函数fun ,其功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。并在主函数中设计s、t1、t2所指字符串输入并输出w所指的数组。将程序保存在TEST2.C文件中。(30分)

    例如,当s所指字符串中的内容为:"abcdabfabc",t1所指子串中的内容为:

    "ab",t2所指子串中的内容为:"99"时, 结果,在w所指的数组中的内容应为:

    "abcdabf99c"。

    代码:

    #include <stdio.h>  
    
    #include <string.h>  
    
    #include <stdlib.h>  
    
    #define N 30    //s所指字符串的最大长度  
    
    #define T 2     //t1和t2所指字符串的长度  
    
       
    
    /***********************************************  
    
    *函数名称: fun  
    
    *创建时间: 2010.12.5  
    
    *作    者: huangliangming  
    
    *描    述: 将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]='\0';  
    
           
    
        //求m所指的值  
    
        for (i=0;i<N;i++)  
    
        {  
    
            if (s[i]=='\0')  
    
            {  
    
                *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]='\0';  
    
       
    
            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");  
    
    } 
    
    

    经过调试了的,但想寻求更简单的方法。

    作者:涵曦www.hanxi.cc
    出处:hanxi.cnblogs.com
    GitHub:github.com/hanxi
    Email:im.hanxi@gmail.com
    文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    《 Skynet 游戏服务器开发实战》

  • 相关阅读:
    Asp.Net Web API 2第一课——入门
    Servlet之ServletContext获取web上下文路径、全局参数、和Attribute(域)
    jsp 获取服务器ip 以及端口号
    对String值不可变的理解以及String类型的引用传递问题
    关于 SAXParseException Content is not allowed in Prolog (前言中不允许有内容)
    用tomcat插件 在Eclipse 中配置Tomcat项目
    docker保存日志文件到本地
    java split函数结尾空字符串被丢弃的问题
    byte类型的127+1=-128?
    java 中 Integer 传参方式的问题
  • 原文地址:https://www.cnblogs.com/hanxi/p/1900748.html
Copyright © 2011-2022 走看看