关于一个c语言小程序的问题
这个程序已经改了好久了,可是总有问题。。。统计特定单词的那个函数不知怎么不起作用,还有那个录入函数又不知怎么跑出来了好几遍。。#include"stdafx.h"#inc...
这个程序已经改了好久了,可是总有问题。。。
统计特定单词的那个函数不知怎么不起作用,还有那个录入函数又不知怎么跑出来了好几遍。。
#include"stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char file[1000],filename[50],*p=file;
/*欢迎主界面*/
int menu_select()
{
inta,i;
while(1)
{
// printf("请输入密码:\n");
// scanf("%d",&i);
// if(i==10010)
{
printf("\t\t\t 单词量统计系统");
printf("\n W E L C O M E ! ! ! !");
printf("\n");
printf("\n");
printf(" \n 组长:*.成员:*.*.");
printf(" \n 班级:计科1304");
printf(" \n 设计时间:2014-06-16\n");
printf("\t\t\t 欢迎使用本系统\n");
printf("\n");
printf("\n");
printf("\n");
printf(" 1.请录入新小说 \n");
printf(" 2.打开已存有小说\n");
printf(" 请输入相应功能的代码:");
scanf("%d",&a);
return a;
}
//else
//{printf("密码错误\n");continue;}
}
}
/*录入与保存*/
void type()
{
FILE *fp;
char ch;
printf("\t请输入所需要录入的文件名\n");
scanf("%s", filename);
if((fp=fopen(filename,"w"))==NULL) /* 打开文件XXX.txt(写) */
{
printf("\t无法打开此文件\n");
exit(0);
}
printf("请开始输入小说内容(以#结束):\n");
do /* 不断从键盘读字符并写入文件,直到遇到#号符 */
{
ch=getchar(); /* 从键盘读取字符 */
fputc(ch,fp); /* 将字符写入文件 */
}while(ch!='#');
printf("\t小说已保存!\n");
printf("\n");
printf("\n");
fclose(fp); /* 关闭文件 */
}
/*功能选择*/
int menu()
{
inta;
printf("请选择进行所需要的功能:\n");
printf("1.统计本小说单词的总数\n");
printf("2.统计本小说中某个单词出现的次数\n");
printf(" \n");
printf("");
scanf("%d",&a);
return (a);
}
char* change(char *a)
{
for(inti=0; i<strlen(a); i++)
{
if((a[i]<='Z')&&(a[i]>='A'))
a[i]+= 32;
}
returna;
}
/*统计小说单词总数*/
void sum()
{
FILE*fp;
if((fp=fopen(filename,"r"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
do
{
p++;
fread(p,1,1,fp);
}while(*p!='#');
//统计单词总数函数
int i,num=0,word=0;
for(i=0;(file[i])!='#';i++)
if(file[i]=='')
word=0;
elseif(word==0)
{
word=1;
num++;
}
printf("本文共有%d个单词.\n",num);
fclose(fp);
}
/*统计小说某单词出现次数*/
void count()
{
FILE*fp;
type();
if((fp=fopen(filename,"rb"))==NULL)
{
printf("无法打开文件!\n");
exit(0);
}
char a[20]; //该数组用来存储用户输入的单词
charb[20]; //该数组存储从文件读进来的单词
printf("请输入要查找的单词(必须为小写):\n");
scanf("%s",a);
int cipin =0; //该参数记录目标单词出现次数
fscanf(fp,"%s",b);//从文件读取第一个单词
change(b); //大写转小写
while(strcmp(b,"")!=0)
{
if(strcmp(a,b)==0) //两个字符串相等则表示是同一个单词
cipin++;
fscanf(fp,"%s",b);//连续读取
change(b);//大写转小写
}
printf("此单词在本文中出现的次数为:%d\n",cipin);
fclose(fp);
}
接着上面的
else if(n==2)
{
count();
printf("\n");
printf("\n");
printf("如需继续统计单词量请按1\n");
printf("如需退出本程序,请直接关闭\n");
scanf("%d",&g);
if(g==1) sum();
else printf("输入错误\n");
}
break;
}
return0;
} 展开
统计特定单词的那个函数不知怎么不起作用,还有那个录入函数又不知怎么跑出来了好几遍。。
#include"stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char file[1000],filename[50],*p=file;
/*欢迎主界面*/
int menu_select()
{
inta,i;
while(1)
{
// printf("请输入密码:\n");
// scanf("%d",&i);
// if(i==10010)
{
printf("\t\t\t 单词量统计系统");
printf("\n W E L C O M E ! ! ! !");
printf("\n");
printf("\n");
printf(" \n 组长:*.成员:*.*.");
printf(" \n 班级:计科1304");
printf(" \n 设计时间:2014-06-16\n");
printf("\t\t\t 欢迎使用本系统\n");
printf("\n");
printf("\n");
printf("\n");
printf(" 1.请录入新小说 \n");
printf(" 2.打开已存有小说\n");
printf(" 请输入相应功能的代码:");
scanf("%d",&a);
return a;
}
//else
//{printf("密码错误\n");continue;}
}
}
/*录入与保存*/
void type()
{
FILE *fp;
char ch;
printf("\t请输入所需要录入的文件名\n");
scanf("%s", filename);
if((fp=fopen(filename,"w"))==NULL) /* 打开文件XXX.txt(写) */
{
printf("\t无法打开此文件\n");
exit(0);
}
printf("请开始输入小说内容(以#结束):\n");
do /* 不断从键盘读字符并写入文件,直到遇到#号符 */
{
ch=getchar(); /* 从键盘读取字符 */
fputc(ch,fp); /* 将字符写入文件 */
}while(ch!='#');
printf("\t小说已保存!\n");
printf("\n");
printf("\n");
fclose(fp); /* 关闭文件 */
}
/*功能选择*/
int menu()
{
inta;
printf("请选择进行所需要的功能:\n");
printf("1.统计本小说单词的总数\n");
printf("2.统计本小说中某个单词出现的次数\n");
printf(" \n");
printf("");
scanf("%d",&a);
return (a);
}
char* change(char *a)
{
for(inti=0; i<strlen(a); i++)
{
if((a[i]<='Z')&&(a[i]>='A'))
a[i]+= 32;
}
returna;
}
/*统计小说单词总数*/
void sum()
{
FILE*fp;
if((fp=fopen(filename,"r"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
do
{
p++;
fread(p,1,1,fp);
}while(*p!='#');
//统计单词总数函数
int i,num=0,word=0;
for(i=0;(file[i])!='#';i++)
if(file[i]=='')
word=0;
elseif(word==0)
{
word=1;
num++;
}
printf("本文共有%d个单词.\n",num);
fclose(fp);
}
/*统计小说某单词出现次数*/
void count()
{
FILE*fp;
type();
if((fp=fopen(filename,"rb"))==NULL)
{
printf("无法打开文件!\n");
exit(0);
}
char a[20]; //该数组用来存储用户输入的单词
charb[20]; //该数组存储从文件读进来的单词
printf("请输入要查找的单词(必须为小写):\n");
scanf("%s",a);
int cipin =0; //该参数记录目标单词出现次数
fscanf(fp,"%s",b);//从文件读取第一个单词
change(b); //大写转小写
while(strcmp(b,"")!=0)
{
if(strcmp(a,b)==0) //两个字符串相等则表示是同一个单词
cipin++;
fscanf(fp,"%s",b);//连续读取
change(b);//大写转小写
}
printf("此单词在本文中出现的次数为:%d\n",cipin);
fclose(fp);
}
接着上面的
else if(n==2)
{
count();
printf("\n");
printf("\n");
printf("如需继续统计单词量请按1\n");
printf("如需退出本程序,请直接关闭\n");
scanf("%d",&g);
if(g==1) sum();
else printf("输入错误\n");
}
break;
}
return0;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询