大家帮我看看这题(字符串查找),谢谢!
函数ReadDat()实现从文件IN89.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR(),其功能是:以行为单位把字符串中的所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,然后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT89.DAT中。例如: 原文:You can create an index on any field
you have the correct record.
结果:n any field.Yu can create an index
rd.yu have the crrect rec
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
【试题程序】
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include <windows.h>
char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void StrOR(void)
{
}
void main()
{
system("cls");
if(ReadDat())
{
printf("Can't open the file!\n"); return;}
StrOR();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;int i=0;char *p;
if((fp=fopen("IN89.DAT","r"))==NULL) return 1;
while(fgets(xx,80,fp)!=NULL)
{
p=strchr(xx,'\n');
if(p) *p=0;
i++;
}
maxline=I;
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE *fp;
int I;
fp=fopen("OUT89.DAT","w");
for(i=0;i<maxline;i++)
{ printf("%s\n",xx); fprintf(fp,"%s\n",xx); }
fclose(fp);
}
以上是题目。我的解答是:
void StrOR(void)
{
int i,strl,j=0,k,m=0,n=0;
char yy[80],zz[80];
for(i=0;i<maxline;i++)
{
strl=strlen( xx [ i ] );
for(;j<strl;j++)
if(xx [ i ] [ j ] =='o')
{
for(k=0;k<j;k++)
yy[m++]=xx [ i ] [ k ];
for(k=j+1;k<strl;k++);
zz[n++]=xx [ i ] [ k ];
strcat(zz,yy);
strcpy( xx [ i ] ,zz);
strl--;
m=n=j=0;
}
}
}
调试出来结果不正确。请问错在哪儿?