指向函数的指针,指针函数

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

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

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

"abcdabf99c"。

代码:

#include

#include

#include

#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最后两个字符会乱码(想寻求其他方法)

{

char w[N];//用来存放处理后的字符串

    char temp[T];//用来存放从s所指字符串中截取的子串

    char t1temp[T];//用来存放t1所指字符串

    int i,j,k,l;//向t1temp中存入t1所指字符串

    for (i=0; i
    {

      t1temp[i]=t1[i];

    }

    t1temp[T]='\0';//求m所指的值

    for (i=0;i
    {

      if (s[i]=='\0')

        {

          *m=i;

        }

     }

//寻找相同时的最后一个字符的下标

    for (i=0; 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
    {

      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
  {

    s[i]=p[i];

  }

  printf("结果为:");

  for (i=0; i
  {

    printf("%c",s[i]);

  }

  printf("\n");

}

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

Tags:  函数指针初始化 函数返回指针 定义函数指针 成员函数指针 函数指针数组 指向函数的指针

延伸阅读

最新评论

发表评论