我正在编写删除相似字符的算法代码。对于前。如果输入字符串是“abb”,输出应该是“a”,对于“abcddbf”,字符串输出应该是“acf”。
我已经编写了一些如下所述的代码,但是一些我如何获得分段错误并且我无法找到故障点。
代码 :
#include<stdio.h>
#include<string.h>
char *remove_adjecent_string(char *in,int count)
{
int i=0;
int j=0;
int flag = 0;
int total = strlen(in);
static char *output = NULL;
if(count == 0)
{
output=(char *)malloc(sizeof(char)*total);
if(output == NULL)
{
return NULL;
}
for(i=0,j=0;i<=total;i++)
{
if(in[i] != '*')
{
output[j]=in[i];
j++;
}
}
return (char *)output;
}
for(i=0;i<=count;++i)
{
printf("In loop i :%d count :%d \t",i,count);
printf("Before comparition in[i] = %c , in[count] = %c \t",in[i],in[count]);
if(in[i] == in[count])
{
printf("Same found in[%d] = in[%d] = %c",i,count,in[i]);
in[i]='*';
flag = 1;
}
printf(" Next loop i = %d\n",++i);
}
printf("Before Recursion \n");
output =remove_adjecent_string(in,(count-1));
return (char *)output;
}
int main()
{
char *input;
char *output;
int i=0;
input = (char *)malloc(sizeof(char)*10);
if(input == NULL)
{
return;
}
output=(char *)malloc(sizeof(char)*10);
if(output == NULL)
{
return;
}
input = "abbb";
int count = -1;
count=strlen(input);
output=remove_adjecent_string(input,(count-1));
printf("Input String = %s\n",input);
printf("Output String = %s\n",output);
}
帮我找出故障案例。