转帖地址: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