#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][j]!='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("数据文件IN.DAT不能打开!\n\007");
return;
}
StrOR();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i = 0;
char *p;
if ((fp = fopen("IN.DAT", "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);
}
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入字符串数组xx[]中,请编制函数StrOR(),其函数的功能是:以行为单位一次把字符串所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到OUT.DAT中。
例如: 原文 n any field. Yu can create an index
You have the correct record.
结果 n any field. Yu can create an index
rd.yu have the crrect rec
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。