标题:100题第4道 另解
只看楼主
redalert
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2005-2-4
 问题点数:0 回复次数:0 
100题第4道 另解


4:函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中; 请编制函数StrOL( ), 其函数的功能是: 以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排,同时去除标点符号,之后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT6.DAT中。
例如: 原文: You He Me
I am a student.
结果: Me He You
student a am I
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含标点符号和空格。
void StrOL(void)
{
int i,j,k,m,n,ll;
char yy[80];
for(i=0; i < maxline; i++) /*取行数范围内循环*/
{
ll=strlen(xx[i]); /*列数赋给ll*/
k=n=0;
for(j=ll-1; j>=0; j--) /*我终于明白了为什么总是 strlen()-l了,原来strlen()函数求的是某行*/
/*字符数,但如果排列时,就是从0开始的。*/
{
if(isalpha(xx[i][j]))
k++; /* isalpha 判断字符是否为英文字母,当c为英文字母a-z或A-Z时,返回非零值,否则返回零。*/

else
{
for(m=1; m<=k; m++)
yy[n++]=xx[i][j+m];
k=0;
}
if(xx[i][j]==' ') /*这中''并不代表空格吧?*/
yy[n++]=' ';
}
for(m=1; m<=k; m++) yy[n++]=xx[i][j+m]; /*没看懂,不知要干什么*/
yy[n]=0; strcpy(xx[i],yy); /*这行没看懂,strcpy()函数的意思是不是把yy里的内容拷贝到xx[]里呢?*/
}
}

搜索更多相关主题的帖子: void 单词 标点符号 英文文章 字符串 
2006-03-15 11:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-50518-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.611307 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved