c语言中通过指针menu,C语言函数指针练习

#include

#include

#include

char showmenu(void);

void eatline(void);

void show(void (* fp)(char *),char * str);

void ToUpper(char *);

void ToLower(char *);

void Transpose(char *);

void Dummy(char *);

int main(void){

char line[81];

char copy[81];

char choice;

void (*pfun)(char *);

puts("Enter a string(empty line to quit):");

while(gets(line)!=NULL&&line[0]!='\0'){

while((choice=showmenu())!='\n'){

switch(choice){

case 'u':pfun=ToUpper;break;

case 'l':pfun=ToLower;break;

case 't':pfun=Transpose;break;

case 'o':pfun=Dummy;break;

}

strcpy(copy,line);

show(pfun,copy);

}

puts("Enter a string (empty line to quit)");

}

puts("Bye!\n");

return 0;

}

char showmenu(void){

char ans;

puts("Enter menu choice:");

puts("u) uppercase l) lowercase");

puts("t) transposed case 0) original case");

puts("n) next string");

ans=getchar();

ans=tolower(ans);

eatline();

while(strchr("ulton",ans)==NULL){

puts("Please enter a u,l,t,o or n:");

ans=tolower(getchar());

eatline();

}

return ans;

}

void eatline(void){

while(getchar()!='\n'){

continue;

}

}

void ToUpper(char * str){

while(*str){

*str=toupper(*str);

str++;

}

}

void ToLower(char * str){

while(*str){

*str=tolower(*str);

str++;

}

}

void Transpose(char * str){

if(islower(*str)){

*str=toupper(*str);

}else if(isupper(*str)){

*str=tolower(*str);

}

str++;

}

void Dummy(char * str){

}

void show(void(* fp)(char *),char * str){

(*fp)(str);

puts(str);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值