求助各位大大解决一下这个程序的小问题!
这个程序有点小毛病!就是在进入模块1输入待统计的字符后再次输入该字符会显示错误!请大家帮帮忙!
还有就是选择进入模块2后!按提示完成步骤直到返回主菜单!但如果不选择主菜单上的功能选项!可以直接进行模块2的应用!
程序不是很严谨~希望大家帮帮忙!
/*program yya13-1.c*/
#include "stdio.h"
#include "stdlib.h"
void main()
{
char *p="The furthest distance in the world\nIs not between life and death\nBut when I stand in front of you\nYet you don't know that I love you\n";
char ch,ch1,*q=NULL;
int count;
int t;
/*主菜单程序段*/
lable1:printf("\n\t请选择功能:\n"); /*语句标号*/
printf("\n\t=========================\n");/*(/t)指横向跳格*/
printf("\n\t1:打开已有文件进行统计\n");
printf("\n\t2:用户新建文件并进行统计\n");
printf("\n\t3:结束程序\n");
printf("\n\t=========================\n");
scanf("%d",&t);getchar(); /*功能编号,消去输入的回车符*/
if(t!=1&&t!=2&&t!=3) /*输入不正确,再次重复输入*/
{
printf("\n\t请重新选择功能键\n");
goto lable1; /*再次重复显示主菜单并输入*/
}
switch(t) /*进入不同功能模块*/
{
case 1:goto lable2;
case 2:goto lable3;
case 3:exit(0);
}
/*模块功能1*/
lable2:printf("打开并显示已有文件:\n"); /*语句标号*/
printf("%s\n",p); /*显示p指向的字符常量*/
printf("请输入待统计的字符:\n");
scanf("%c",&ch); getchar();
count=0; /*计数器清零*/
q=p; /*指针q指向字符串常量*/
loop1: /*语句标号*/
if(*q=='\0') /*通过指针q的间接访问判断是否到文本结束标志*/
{
printf("%c的个数是:%d\n",ch,count); /*输出结果*/
goto lable1;
}
else
{
if(*q==ch) /*用指针q间接访问字符,判断该字符是否为待统计的字符*/
count++;
q++;
goto loop1;
}
/*功能模块2*/
lable3:printf("请输入待统计的字符:\n");
scanf("%c",&ch); getchar();
count=0;
printf("请输入新建英文文章。回车结束输入!\n");
loop2:ch1=getchar(); /*输入文章的每个字符,不储存*/
if(ch1=='\n') /*回车结束输入*/
{
printf("%c的个数是:%d\n",ch,count);/*输出结果*/
goto lable1;
}
else /*文章未结束,继续输入并进行字符统计*/
{
if(ch1==ch) /*判断当前字符是否为待统计的字符*/
count++;
goto loop2; /*转入下一次判断*/
}
}