三级试题和向大家请教一下
程序是这样的:(程序很长主大家耐心看一下呀)
注打星号之间的是要求填写的程序的一部分(即本人写的一段程序)
问题是这样的:
函数ReadDat()的功能是实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR(),该函数的功能是:以行为单位把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后并把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果输出到文件OUT5.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
程序如下:
#include <stdio.h>
#include <String.h>
#include <conio.h>
char xx[50][80];
int maxline=0;
int Read(void);
void Write(void);
void StrOR(void);
/*************************************
{ int i,j,m,num=100,k=0;char A[80],B[80];
for(i=0;i <maxline;i++)
{ for(j=0;j <80;j++)
if(xx[i][j]== 'o ')num=j;
if(num!=100)
{ m=num;
while(xx[i][m]!= '\0 ')
{ A[k]=xx[i][m]; k++; m++; }
}
A[k]= '\0 ';k=0;
for(j=0;j <num;j++)
{ if(xx[i][j]== 'o ')continue;
B[k]=xx[i][j];k++;
B[k]= '\0 ';
strcpy(xx[i],A);strcat(xx[i],B);
}
}
}
/***************************
void main()
{ clrscr();
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 Write(void)
{ FILE *fp;
int i;
clrscr();
fp=fopen( "OUT5.DAT ", "w ");
for(i=0;i <maxline;i++){
printf( "%s\n ",xx[i]);
fprintf(fp, "%s\n ",xx[i]);
}
fclose(fp);
}
程序说明为系统函数声明错误。请高手级看一下吧。
[解决办法]
int ReadDat(void);
void WriteDat(void);
void main()
{
//clrscr();
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;
//clrscr();
fp=fopen( "OUT5.DAT ", "w ");
for(i=0;i <maxline;i++){
printf( "%s\n ",xx[i]);
fprintf(fp, "%s\n ",xx[i]);
}
fclose(fp);
}