| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 359 人关注过本帖
标题:帮忙看看。非常紧迫
只看楼主 加入收藏
a17604032
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-4-19
结帖率:100%
收藏
已结贴  问题点数:66 回复次数:4 
帮忙看看。非常紧迫
只有在2009年6月26日中午13点前帮忙的朋友。我才会结账送点数。过期的话这个帖子就失去意义了

帮我看看程序有什么问题啊。为什么什么错误都没有,运行的时候统计有问题。能帮我改吗。急要。中午要交了。
我要实现的功能。打开一个文件,在文件里的内容分别查找特定的字母和单词。并统计。查字母写一个程序。查单词
写一个程序。

如果还有时间的话。在帮我看看排序的那一个。。实现功能,打开一个文件,对里面的单词进行字典序排序
查找单词数的程序:

#include<stdio.h>
#define R 30
#define MAXLINE 100
void main(){
   char fname[R],pattern[R],s[MAXLINE];  
   FILE *fp;
    int  i,j,k,l,dworrd;
   char c;
   printf("please enter word\n");
   gets(pattern);
   printf("Please enter the file name :\n");
   /*输入保存的文件名*/
   scanf("%s",fname);
   /*打开统计文本*/
   if((fp=fopen(fname,"r"))==NULL){
      printf("can not open the file\n");
      exit(0);
   }
   for(i=0;((c=fgetc(fp))!=EOF)&&(i<100);i++)
        s[i++] = c;
    if(i>0){

           for (l=0; s[l] != EOF&&(l<100); l++) {
                for (j=l, k=0; pattern[k]!='\0' && s[j]==pattern[k]; j++,k++)
                    ;
                 if (k > 0 && pattern[k] == '\0')
                dworrd++;
           }
   }
   printf("%d",dworrd);
   fclose(fp);
}




查找字母数的程序:
#include<stdio.h>
#define R 30
void main(){
   char fname[R],fname1[R];
   int d,c;
   int dletter; /*查找字母数*/
   FILE *fp3,*fp31;
   /*输入要查找的字母*/
   printf("please enter the char:\n");
   d=getchar();
   /*输入打开的文件名*/
   printf("Please enter the file name :\n");
   scanf("%s",fname);
   /*输入保存结果的文件名*/
   printf("Save the results of input File Name :\n");
   scanf("%s",fname1);
   /*打开文件*/
   if((fp3=fopen(fname,"r"))==NULL){
      /*打开文件*/
      printf("can not open\n");
      exit(0);
    }
   printf("Please enter the letters to find\n");
   /*查找字母数*/
   while((c=fgetc(fp3))!=EOF){
       if(c==d){
          ++dletter;
       }
   printf(" look for letter is %d",dletter);
   printf("Save the results of input File Name :\n");
   if((fp31=fopen(fname1,"w"))==NULL){
      printf("can not open\n");
      exit(0);
    }
   fprintf(fp31," look for letter is %d",dletter);
      fclose(fp31);
      fclose(fp3);
    }
}




排序的程序:

#include<stdio.h>
#include<string.h>
#define R  30
#define L  100
void sort(char *str,L){
   char *pt;
   int i,j,k;
   for(i=0;i<L-1;i++){
       k=i;
       for(j=i+1;j<L;j++)
           if(strcmp(str[k],str[j])>0)
                k=j;
            if(k!=i){
                pt=str[i];
                str[i]=str[k];
                str[k]=pt;
             }
    }   
}
void print(char *str,L){
   int i;
   for(i=0;i<L;i++)
   printf("%s\n"str[i]);
}
void main(){
   FILE *fp;
   char fname[R],str[L];
   int i;
   printf("Enter the file name:\n");
   scanf("%s",fname);/*输入文件名*/
   if((fp=fopen(fname,"r"))==NULL){
       /*打开文件*/
      printf("can not open\n");
      exit(0);
   }
   for(i=0;i<L;i++){
   fscanf(fp," %s ",str[i]);
   }
   sort(str,L);
   print(str,L);
   fclose(fp);  
}

[[it] 本帖最后由 a17604032 于 2009-6-26 06:11 编辑 [/it]]
搜索更多相关主题的帖子: 高分求助 
2009-06-26 06:10
思考的洗衣机
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:142
专家分:187
注 册:2009-6-21
收藏
得分:0 
读词.我简单试了下.你再试试
#include<stdio.h>
#include <stdlib.h>    //xyj:exit(1);需要使用
#include <string.h>    //xyj add
#define R 30
#define MAXLINE 100
int main(void){
      char fname[R], pattern[R];//, s[MAXLINE];  
      FILE *fp;
      /*
      int  i, j, k, l, dworrd = 0;
      char c;
      */
      int dworrd = 0;
      //xyj add 我的变量
      unsigned int pattern_len;
      int c_int;
      char buf[R];

      printf("please enter word\n");
      gets(pattern);
      printf("Please enter the file name :\n");
      
      /*输入保存的文件名*/
      scanf("%s",fname);
      
      /*打开统计文本*/
      if((fp=fopen(fname,"r"))==NULL){
            printf("can not open the file\n");
            exit(1);
      }
/*   完全不能读懂这段
      for(i = 0; ((c = fgetc(fp)) != EOF) && (i < 100); i++)
            s[i++] = c;
      if(i>0){
            for (l=0; s[l] != EOF&&(l<100); l++) {
                  for (j=l, k=0; pattern[k]!='\0' && s[j]==pattern[k]; j++,k++)
                        ;
                  if (k > 0 && pattern[k] == '\0')
                        dworrd++;
            }
      }
*/  
      pattern_len = strlen(pattern);
      while((c_int = fgetc(fp)) != EOF)             //逐字扫描
      {
            if(c_int == *pattern)                         //如果找到第一个相同字
            {
      memset(buf,0,R);
                  if(fgets(buf,pattern_len,fp) != NULL)     //读出后面关键词的字的个数减1个字,因为第一个字已经比较完成了
                  {
                        if(!strcmp(buf,&pattern[1]))        //比较读出的字和从关键词第2个字开始到结尾的词
                              dworrd++;                           //比较匹配统计+1
                        else
                              fseek(fp,0-strlen(buf),SEEK_CUR);         //不匹配将文件位置指针从当前位置-读出的字数,因为读字会改变指针位置
                  }
            }
      }

      printf("%d",dworrd);
      fclose(fp);
      return 0;
}
2009-06-26 07:48
思考的洗衣机
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:142
专家分:187
注 册:2009-6-21
收藏
得分:66 
//查找字母数的程序:
#include<stdio.h>
#include <stdlib.h>
#define R 30
void main(){
      char fname[R],fname1[R];
      int d,c;
      int dletter  = 0; /*查找字母数*/
      FILE *fp3,*fp31;
      
      /*输入要查找的字母*/
      printf("please enter the char:\n");
      d=getchar();
      
      /*输入打开的文件名*/
      printf("Please enter the file name :\n");
      scanf("%s",fname);
      
      /*输入保存结果的文件名*/
      printf("Save the results of input File Name :\n");
      scanf("%s",fname1);
      
      /*打开文件*/
      if((fp3=fopen(fname,"r"))==NULL){
            /*打开文件*/
            printf("can not open\n");
            exit(1);
      }
      printf("Please enter the letters to find\n");
      /*查找字母数*/
      while((c=fgetc(fp3))!=EOF){
            if(c==d){
                  ++dletter;
            }
      }
            printf(" look for letter is %d",dletter);
            printf("Save the results of input File Name :\n");
            if((fp31=fopen(fname1,"w"))==NULL){
                  printf("can not open\n");
                  exit(1);
            }
            fprintf(fp31," look for letter is %d",dletter);
            fclose(fp31);
            fclose(fp3);

}
要注意exit(1);里面一般是1,不是0;这个函数需要加<stdlib.h>
查字的程序你{}写错位置了.
2009-06-26 07:58
思考的洗衣机
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:142
专家分:187
注 册:2009-6-21
收藏
得分:0 
最后一个排序的那个我想了想,应该用二叉树实现.二叉树我给忘了怎么做了.你学习下二叉树吧.应该是数据结构那本书.
2009-06-26 08:10
a17604032
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-4-19
收藏
得分:0 
回复 3楼 思考的洗衣机
这一个好像有问题吧。
如果我在下面查找we这个单词的话出现12个。可是我we这个单词只有7个
we we we
we wewe
we we we
wewewe
2009-06-26 10:47
快速回复:帮忙看看。非常紧迫
数据加载中...
 
   



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

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