程序出问题了 帮忙看下
找到单词后 替换成word_tab中后一个单词 不知道哪里错了#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void replace_word(char s[])
{
char word_tab[4][10]={"sad","happy","accuse","forgive"};
char temp[10],copys[80];
int n,m,i,k1,k2,len,q1,q2,j;
for(n=0,m=0;s[n]!='\0';n++)
{
if(s[n]!=' '&&s[n+1]==' ')/*s[m]与s[n]之间是一个单词*/
{
for(i=0;i<10;i++)
temp[i]='\0';
for(i=0,j=m;j<=n;j++,i++)
{
temp[i]=s[j];
}
for(i=0;i<4;i++)
if(!strcmp(temp,word_tab[i]))
{
len=strlen(word_tab[i]);
for(k1=m,k2=n+1;s[k2]!='\0';k2++,k1++)/*将这个单词从s数组中删去*/
{
s[k1]=s[k2];
}
for(;k1<k2;k1++)
s[k1]='\0';
for(q1=0;q1<m;q1++)/*将s数组中这个单词前面的字母复制到数组copys中去*/
copys[q1]=s[q1];
for(q2=m+len,j=0;q1<q2;q1++,j++)/*用新单词替换原单词*/
{
copys[q1]=word_tab[i==3?0:i+1][j];
}
for(;s[q2]!='\0';m++,q1++)/*将s数组中这个单词后面的字母接到copys之后*/
copys[q1]=s[m];
for(;q1<80;q1++)
copys[q1]='\0';
strcpy(s,copys);
}
}
if(s[n]==' '&&s[n+1]!=' ')
m=n+1;
}
}
void main()
{
char s[80]="I accuse your mistakes.";
replace_word(s);
printf("%s\n",s);
}