| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1660 人关注过本帖
标题:一个非常非常不可思议的问题
取消只看楼主 加入收藏
stephen250
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-6-9
收藏
 问题点数:0 回复次数:4 
一个非常非常不可思议的问题
今天做了一道计算机三级的题目,如下:

函数ReadDat()的功能是实现从文件IN012.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOL(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT012.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 <stdlib.h>
#include <ctype.h>
#include <memory.h>
char xx[50][80] ;
int maxline = 0 ;/* 文章的总行数 */
int   ReadDat(void) ;
void  WriteDat(void) ;
void StrOL(void)
{

}
void main()
{
 system("CLS");
 if (ReadDat ())
    {
     printf("数据文件 IN012.DAT不能打开!\n\007") ;
     return ;
    }
 StrOL() ;
 WriteDat() ;
}
int ReadDat(void)
{
 FILE *fp ;
 int i = 0 ;
 char *p;
 if((fp = fopen("IN012.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("OUT012.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 n1;
    int len;
    char *p1,*p2;
    char t1[80],t2[80];
    for(n1=0;n1<maxline;n1++)
    {
        len=strlen(xx[n1]);
        t1[0]=t2[0]='\0';
        p1=&xx[n1][len-1];
        p2=&xx[n1][len-1];
        while(1)
        {
        while(isalpha(*p1)==0)
            p1--;
        p2=p1;
        while(isalpha(*p1))
            p1--;
        memcpy(t2,p1+1,p2-p1);
        t2[p2-p1]='\0';
        strcat(t1,t2);
        strcat(t1," ");
        if(p1-&xx[n1]<0)
            break;
        }
        strcpy(xx[n1],t1);
    }
}

编译运行都正确,但是结果却是很诡异的错误:
图片附件: 游客没有浏览图片的权限,请 登录注册

第四行竟然多出了一个which,其他的结果却都是正确的,请各位高说指点一下!

00000000.rar (30.17 KB)
搜索更多相关主题的帖子: 函数 计算机 include 不可思议 标点符号 
2008-08-04 16:54
stephen250
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-6-9
收藏
得分:0 
自己顶,我就不信没有高人能够帮我。
2008-08-05 10:32
stephen250
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-6-9
收藏
得分:0 
[bo][un]lingluoz[/un] 在 2008-8-5 10:35 的发言:[/bo]

你应该自己学会调试 自己解决 不要遇见什么问题就请教高手
如果实在不行 再发过来 不要过分依赖别人


我觉得LS还是自己做一下这个题目吧,我已经研究了一天,你如果不愿意做,那就不要随便批评我。
2008-08-05 13:42
stephen250
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-6-9
收藏
得分:0 
回复 8# 崔园园 的帖子
那是个笔误,事实上改过来了以后依然是那个错误。
2008-08-05 18:39
stephen250
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-6-9
收藏
得分:0 
回复 11# hello_moto 的帖子
非常感谢!我知道是什么问题了,遍得不够严谨啊。
谢谢!
2008-08-06 15:06
快速回复:一个非常非常不可思议的问题
数据加载中...
 
   



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

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