| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 365 人关注过本帖
标题:诚心求解,关于重复调用一个嵌套函数的问题。
只看楼主 加入收藏
repanda
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-11-12
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
诚心求解,关于重复调用一个嵌套函数的问题。
帮朋友做的一道题目,计算一行英文作文里某个特定的单词出现的次数,【ps那篇英文作文我以附件的形式上传上来了】要求:需要搜索的几个单词在一次输入后的到其出现次数,作文也只是一行的英文。这个程序写完没语法错误,但却无法运行,我c学得渣渣的,搞了很久都不知道到底应该怎么改进。但我肯定应该是程序最后几行中的
“for(m=0;m<=2;m++){   getsentence(str1,fp,str2[m]);
        printf("The word %s which you want to search in the file have been appeared %d times in total!\n",str2[m],sum);}”
出现了 错误,但又不知道应该怎么改,跪求好心人搭救orz。
a.zip (630 Bytes)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define N 200
#define M 20
static int sum=0;              /*sum是用来记录目标单词总共出现的次数,必须用static型*/


/************************************************************/

/*sum是用来记录目标单词总共出现的次数,必须用static型*/

void checkword(char* p1,char* objectword){   

     char temp[M];/*这个数组是用来存取从句子中提取出来的单词*/

     int i=0,j,count=0;

     while(p1!='\0'){

        j=0;

        while(isalpha(p1)){/*用来检测p1是不是字母*/

           temp[j]=p1;

           i++;

           j++;

        }

        temp[j]='\0';

        if(strcmp(temp,objectword)==0)/*判断提取出来的单词是否与要查找的单词一致*/

           count++;

        while(!isalpha(p1)&&p1!='\0'){

           i++;

        }

     }

     if(count!=0){

        printf("%s\n",p1);

        sum+=count;

     }         

}

void getsentence(char* p1,FILE* p2,char* objectword){

     int i;

     char ch;

     ch=fgetc(p2);

     while(ch!=EOF){

        i=0;

        while(ch!='.'&&ch!=';'&&ch!=EOF){

            p1=ch;

            i++;

            ch=fgetc(p2);


        }

        if(ch=='.'||ch==';'){

           p1=ch;

           p1[i+1]='\0';   

           checkword(p1,objectword);

           ch=fgetc(p2);

        }

     }

}

/*******************************************************************/
int main()
{
    char str1[M];
        char str2[2][M];
        char filename[M];
        int m;


    FILE* fp;
    printf("Please input the name of the file:\n");
    scanf("%s",filename);
        printf("\n");
         printf("Please input the word which you want to search:\n");

    scanf("%s %s %s",str2[0],str2[1],str2[2]);        
    fp=fopen(filename,"r");
    if(fp==NULL){
       printf("cannot open the file\n");
       exit(0);
    }
for(m=0;m<=2;m++)
{   getsentence(str1,fp,str2[m]);
        printf("The word %s which you want to search in the file have been appeared %d times in total!\n",str2[m],sum);}
    fclose(fp);
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: 英文作文 search 朋友 file 
2013-11-17 20:39
a151141
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:197
专家分:680
注 册:2012-10-19
收藏
得分:7 
首先你的程序中好多地方应该用*p1而不是p1;
其次你的文件并没有建立;
还有一点疑惑fp=fopen(filename,"r");这句话我感觉你是要打开某文件,但是在是没见过,不知道可不可以

[ 本帖最后由 a151141 于 2013-11-17 22:52 编辑 ]

世界上幸福的事就是抓到一只羊,更幸福的事就是抓到两只羊……
2013-11-17 22:51
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:7 
回复 2楼 a151141
fopen可以这样用

埋头做牛,抬头做人,低头做狗
2013-11-19 09:19
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:7 
类似的问题有人问过.你看一下下面的贴子,六楼有我写的代码
你的问题比他的问题还简单.我觉得你的代码复杂了.
https://bbs.bccn.net/viewthread.php?tid=423119&page=1#pid2362386
2013-11-19 10:23
a151141
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:197
专家分:680
注 册:2012-10-19
收藏
得分:0 
回复 3楼 pink_duo
呵呵,嗯,学习了,谢谢

世界上幸福的事就是抓到一只羊,更幸福的事就是抓到两只羊……
2013-11-25 00:39
快速回复:诚心求解,关于重复调用一个嵌套函数的问题。
数据加载中...
 
   



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

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