只考虑小括号,不考虑先出现右括号的情况;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Bracket(char* src, char* dst)
{
int nleft=0;
int nright=0;
int i=0;
char c;
if(src!=NULL)
{
while((c=src[i++])!='\0')
{
if(c=='(') nleft++;
if(c==')') nright++;
}
int nmin=nleft>nright?nright:nleft;
nleft=nmin;
nright=nmin;
i=0;
int ldst=0;
while ((c=src[i++])!='\0')
{
if (c=='(' && nleft-- >0)
{
dst[ldst++]=c;
}
if (c==')' && nright-- >0)
{
dst[ldst++]=c;
}
if(c!='(' && c!=')')
{
dst[ldst++]=c;
}
}
dst[ldst]='\0';
puts(dst);
}
}
int main()
{
char src[60];
char dst[60];
gets(src);
Bracket(src,dst);
return 0;
}原文地址:http://blog.csdn.net/wtyvhreal/article/details/45726363