字符串处理
我写的程序,哪里错了,该怎么改
【问题描述】
输入一个字符串,从头到尾搜索,凡搜索到前面已出现过的相同单词,就删除。也就是说,在这个字符串中,每个单词只能出现一次。
【样例】
输入:Where there is a will , there is a way
输出:Where there is a will , way
#include<stdio.h>
#include "string.h"
#include <stdlib.h>
int main()
{
char a[1000],*p[30],*q,*t;
int i;
gets(a);
q=a;
for(i=0;i<30;i++)
{
t= (char *)malloc(15);
int j=0;
while(*q)
{
t[j]=*q;
j++;
if(*q==32)
{
t[j]=0;
q++;
break;
}
q++;
}
if(*q==0)
t[j]=0;
if(i==0)
{
p[i]=t;
continue;
}
for(int k=0;k<i;k++)
{
if(strcmp(p[k],t)==0)
i-=1;
else
p[i]=t;
}
if(!*q)
break;
}
for(int k=0;k<=i;k++)
{
printf("%s\n",p[i]);
free(p[k]);
}
}