函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组)XX中;请编制函数StrOR,其函数的功能是:以该文章中的行为单位依次扫描一行字符串中的小写字母0,每次将小写母0的左右字符串部分作交叉换位,即左边字符串移到小写字母0的右边,而原先右边的则反之,并把小写母O删除,依次直至这一行中的小写母0处理完,之后把已处理的字符串仍按行重新存入字符串数组)XX中。 最后main函数调用函数WriteDat把结果XX输出到文件out.dat中。例如原文:you have the correct record. 第1个o:U have the correct record.Y 第2个o:rrect record.yuhavethe c 第3个o:rd.yuhavethe crrect rec 提示:对于每一行字符串数组处理有如下一种递归调用算法可供参考: 查找字符串中首个小写字母'0'的位置;没有找到'0',则结束递归调用;找到'0',则按题意对字符串进行处理,形成新的字符串,然后返回,继续进行递归调用。 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在test.c文件中。 请勿改动主函数main、读数据函数ReadDat和输出数据函数WriteDat的内容。
答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。
答 案:
【审题关键句】以行为单位,依次把字符串中所有小写字母0左边的字符串内容移到该串的右边存放,然后把小写字母0删除,余下的字符串内容移到已处理字符串的左边存放。
【解题思路】
①定义循环变量i和字符数组before[80]、after[80]及字符指针变量P。
②在for循环语句中,循环变量i从0开始,依次递增直到其值等于maxline,在循环体中,利用while循环语句一直执行如下的操作,调用库函数strchr定位字母0在字符串xx[i]中第一次出现的位置P。如果P非空,说明在此字符串中找到了字母0,对于xx[i]有字母0的情况,从字符串xx[i]的第xx[i]+(p.xx[i]+1)字符开始,直到字符的结尾,调用字符串拷贝函数strcpy把字母0后面的字符串拷贝到字符数组after[80]中,然后把+p的值设置为0,删除字母0,调用字符串拷贝函数s仃cpy把字符串xx[i]拷贝到字符数组before[80]qh,调用字符串拷贝函数strcpy把字符数组after[80]中的值拷贝到xx[i],再调用字符串连接函数streat把xx[i]与before[80]相连接,实现字母0前后字符串的互换。如果P为空,说明在XX[i]中没有字母0,则退出while循环。进入下一行字符串的处理。
【答案参考】