论坛: 编程破解 标题: C语言问题 复制本贴地址    
作者: taojuntjpp [taojuntjpp]    论坛用户   登录
函数ReadDate()的功能是实现从文件IN2.DAT中读取一篇英文文章存入到字符串数组xx中;

请编制函数strol(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不包含标点符号)仍以行重新存入字符串数组xx中,最后调用函数writedata()把结果xx输出到文件out2.DAT中。

代码如下:

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
char xx[50][80];
int maxline=0;    /*文章的总行数*/
int ReadDat(void);
int WriteDat(void);
void StrOL(void)
{

    /*这里面如何写啊?*/

}
main()
{
  clrscr();
  if (ReadDat())
  {
      printf("数据文件IN2.DAT不能打开!\n\007");
      return;
  }
  StrOL();
  WriteDat();
}
int ReadDat(void)
{
    FILE *fp; /*FILE 是什么关键字啊?有什么作用?*/
    int i=0;
    char *p;
    if((fp=fopen("IN2.DAT","r"))==NULL) return 1;
    while(fgets(xx,80,fp)!=NULL)

/*fgets(,,,)函数中三个参数分别代表什么意思,这个函数有什么功能*/
    {
        p=strchr(xx,'\n');/*函数strchr()有什么些功能,参数是什么意思?*/
        if(p)  *p=0;
        i++;
    }
    maxline=i;
    fclose(fp);
    return 0;
}
void WriteDat(void)
{
    FILE *fp;
    int i;
    clrscr();
    fp=open("out2.DAT","w");
    for(i=0;i<maxline;i++)
    {
        prinrf("%s\n",xx);
        fprintf(fp,"%f\n",xx);
    }
    fclose(fp);
}


地主 发表时间: 05-03-01 13:50

回复: 286 [unique]   版主   登录
作业吗?作业我可不想回答。你别的地方都能编出来,这部分想来也不会太难。

提示:
int pos1,pos2;
char *str;

for (int i=0;i<maxline;i++) //依次处理每一行的内容。
{
    str=strcat(xx[i],",");  //给要处理的这一行加一个标记,以便该行得到处理。
    pos1=pos2=0;            //pos1表示某单词的开始位置,pos2表示单词结尾位置。
  while (pos2<len(str)      //从头开始,一直到全部处理完。
  {
    while (isalpha(*(str+pos2)) //找该单词的结尾位置。
        pos2++;
    for (int j=pos1;j<pos1+(pos2-pos1)/2;j++) //有了单词的头和尾位置,然后倒排。
    {
      char tempchr=str[j];str[j]=str[pos2-j];str[pos2-j]=tempchr;
    }
    pos1=pos2=pos2+2;//找下一个单词的首位置。
  }       
}

B1层 发表时间: 05-03-01 14:31

回复: taojuntjpp [taojuntjpp]   论坛用户   登录
谢谢286啊
不是作业啊。是在三级上机考试题目上看到的。
我看了答案,可看不懂。
呵呵。其他的程序代码,是书上就有的,我是一个字一个字打上来的。
要填写的就是那段函数代码。
还有就是:
  FILE *fp;
/* FILE 是什么关键字啊?有什么作用?*/???
    int i=0;
    char *p;
    if((fp=fopen("IN2.DAT","r"))==NULL) return 1;
    while(fgets(xx,80,fp)!=NULL)

/*fgets(,,,)函数中三个参数分别代表什么意思,这个函数有什么功能*/???
    {
        p=strchr(xx,'\n');
/*函数strchr()有什么些功能,参数是什么意思?*/????
        if(p)  *p=0;
        i++;
    }



B2层 发表时间: 05-03-01 20:56

回复: 286 [unique]   版主   登录
每个编程语言,都有自己的关键字,关键字你可以理解为是这个系统保留的单词,这些词用户不能当作变量使用。比如int表示:定义后面的变量为一整型变量,这个int就是关键字。你不能定义成 int int=5。这样,后面的int此后作变量还是作类型?同样FILE在C里表示一个文件指针,你就不能再定义这样的变量了。
fgets(数组缓冲区首地址,要读的长度,文件指针),这个函数的功能是把文件指针所指的文件内容读要读的长度个字符,到数组缓冲区中。strchr没用过,不过你可到置顶贴中找。

B3层 发表时间: 05-03-02 08:56

回复: taojuntjpp [taojuntjpp]   论坛用户   登录
好的。又学了不少哦
谢谢老大啊~~~
我来找找看哦。呵呵~~

B4层 发表时间: 05-03-02 09:09

回复: taojuntjpp [taojuntjpp]   论坛用户   登录
str…字符串操作函数
........
char  strchr(const char *s,int c)
        检索并返回字符c在字符串s中第一次出现的位置

........
我找到了哦。呵呵~~


B5层 发表时间: 05-03-02 09:19

回复: buszker [buszker]   论坛用户   登录
FILE 是文件结构的 typedef 形式 他定义的指针才是文件指针

还有楼主 不知道 FILE为何物怎么C???????

B6层 发表时间: 05-03-15 17:36

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号