函数ReadDat()可以从文件IN.DAT中读取一篇英文文章并将其存入字符串数组xx中。请编制函数StrOL(),其功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排,然后把已处理的字符串(不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数writeDat(),把结果xx输出到文件OUT.DAT中。 例如,原文: You He Me I am a student. 结果: Me He You student a am I 原始数据文件的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序给出如下。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 [试题源程序] #include<stdio.h> #include<string.h> #include<conio.h> #include<ctype.h> char xx[50][80]; int maxline=0;/*文章的总行数*/ int ReadDat(void); void WriteDat(void); void StrOL(void)
void main()
system("cls"); if(ReadDat())
printf("数据文件IN.DAT不能打开!\n\007"); return;
StrOL(); 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; system("cls"); fp=fopen("OUT.DAT","w"); for(i=0;i<maxline;i++)
printf("%s\n",xx[i]); fprintf(fp,"%s\n",xx[i]);
fclose(fp);
【参考答案】
void StrOL(void) { int i,j; char t[H0]={0}; ......