C语言
历史哭泣 2009-09-16 10:40:19 #include<stdio.h>
#include<string.h>
#include<conio.h>
char xx[50][80];
int maxline=0;
int ReadDat(void );
void WriteDat(void);
void StrOR(void )
{
int i,j,k;
char buf[80];
for(i=0;i<maxline;i++)
{
j=strlen(xx[i]-1);
while(xx[i]!='o'&&j>=0)
j--;
if(j<0)
continue;
xx[i][j]=0;
strcpy(buf,&xx[i][j+1]);
k=j=0;
while(xx[i][j])
{
while(xx[i][j]!='o'&&xx[i][j])
j++;
if(!xx[i][j])
{
strcat(buf,&xx[i][k]);
break;
}
xx[i][j]=0;
strcat(buf,&xx[i][k]);
j++;
k=j;
}
strcpy(xx[i],buf);
}
}
void main()
{
if(ReadDat())
{
printf("shuju");
return ;
}
StrOR();
WriteDat();
}
int ReadDat(void )
{
FILE *fp;
int i=0;
char *p;
if((fp=fopen("IN.txt","r"))==NULL)
return 1;
while(fgets(xx[i],80,fp)!=NULL)
{
p=strchr(xx[i],'\n');
if(p)
*p=0;
i++;
}
maxline =i;
fclose(fp);
return 0;
}
void WriteDat(void )
{
FILE *fp;
int i;
fp=fopen("OUT.DAT","w");
for(i=0;i<maxline;i++)
{
printf("%s\n",xx[i]);
fprintf(fp,"%s\n",xx[i]);
}
fclose(fp);
}
上面的代码实现以行为单位,依次把字符串里面的所有的小写O左边的字符内容移到该串的右边,然后把小写删除,余下的字符内容移到已经处理字符串的左边,之后,把已经处理的字符串仍按行重新存入字符数组XX中,,