运行异常?
此函数要按行实现单词逆排序,编译和连接正常,但运行时出现异常,帮忙看下,谢谢如:原XX[1]为:ME YOU HE
则输出为:HE YOU ME
void sort()
{
int i,j,strl,k;
for(i=0;i<maxline;i++)
for(j=0;j<strlen(XX[i]);j++)
if(!(XX[i][j]>='a'&&XX[i][j]<='z')||(XX[i][j]>='A'&&XX[i][j]<='Z')||(XX[i][j]>='0'&&XX[i][j]<='9'))
XX[i][j]=' ';
//把串中所有除空格外的分隔符去掉,并用-代替
for(i=0;i<maxline;i++)
{
char ch[80]={0},pp[80]={0};//ch存放当前行,pp暂存一个单词
strl=strlen(XX[i])-1;
int l=1;
while(1)
{
while((XX[i][strl]>='a'&&XX[i][strl]<='z')||(XX[i][strl]>='A'&&XX[i][strl]<='Z')||(XX[i][strl]>='0'&&XX[i][strl]<='9'))
//从行未开始读取字符,如果是字母的话就把字母存放到ch中,直到遇单词结束标记
{
for(k=l;k>0;k--)//把暂时存的不完整单词后移一位,第一位接收此串的最后一字符
pp[k]=pp[k-1];
pp[0]=XX[i][strl];
l++;strl--;
}
strcat(ch,pp);//把单词存入ch中
strcpy(pp,"");
l=1;//pp清空,即当前单词长度为1,'\0'
if(strl==-1)break;
while(!(XX[i][strl]>='a'&&XX[i][strl]<='z')||(XX[i][strl]>='A'&&XX[i][strl]<='Z')||(XX[i][strl]>='0'&&XX[i][strl]<='9'))
{//处理空格,方法同单词处理一样
for(k=l;k>0;k--)
pp[k]=pp[k-1];
pp[0]=XX[i][strl];
l++;strl--;
}
strcat(ch,pp);
strcpy(pp,"");
l=1;
if(strl==-1)break;
}
strcpy(XX[i],ch);
}
}