清除掉圆括号()里面的字符,但是保留方括号[]里面的字符

    技术2025-07-17  11

    转帖地址:http://blog.csdn.net/djbtestingsky/archive/2008/05/28/2491508.aspx

     

    下面跟大家分享的是一道C语言的笔试题.  用C语言写一个函数,完成的功能如下:  清除掉圆括号()里面的字符,但是保留方括号[]里面的字符  前提条件:输入的字符串中括号成对出现  例如:   abc(de[fg]hmw)z   经过函数后最后的结果是abcfgaz   这个题目学员过来问我,用了大概30分钟左右的时间写了出来,给大家分享一下:*/#include<stdio.h>#include<string.h>

    //TestCharacter()函数完成的功能是清除掉圆括号里面的字符,但是保留方括号里面的字符//abc(de[fg]hmw)z经过我们的TestCharacter()函数后最后的结果是abcfgz//前提条件:输入的字符串中括号成对出现

    static char * TestCharacter(char *p){ static char d[50]; int flag=0;//当遇到'('时flag为1,当遇到')',flag为0; int i=0;

     for(;*p!='/0';p++) {  if(*p=='(' ||*p==']')   {   if(*p=='(')    flag=1;   if(*p==']')    p++;    for(;*p!=')' && flag && *p!='/0';p++)    if(*p=='['|| *p==']')      break;   }   for(;*p=='[' || *p==']' || *p=='(' || *p==')';p++)  {

        if(*p==')')      flag=0;

      }  d[i]=*p;  i++; } d[i]=0; return d;}void main(void){ char s[50]; gets(s); strcpy(s,TestCharacter(s)); puts(s);

    }/*

    你可以输入下面的数据进行测试:             预期结果1.(a)[b]            a2.[b](a)            b3.(a[bc]d)e         bce4.(a[b]d)[e]f(g)h   befh上面的程序通过了测试,你可以试试.*/

     

    本文来自博客,转载请标明出处:http://blog.csdn.net/djbtestingsky/archive/2008/05/28/2491508.aspx

    最新回复(0)