c函数和指针练习
来源:互联网 发布:java运行class文件 编辑:程序博客网 时间:2024/04/29 02:51
#include <stdio.h>
#include<string.h>
#include<ctype.h>
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 *); //指向一个函数,该函数接受一个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()制作一份拷贝
show(pfun, copy);//使用用户选择的函数
}
puts("enter a string(empty line to quit):");
}
puts("bye!");
return 0;
}
char showmenu(void)
{
char ans;
puts("enter menu choice.");
puts("u)uppercase l)lowercase");
puts("t)transposed case o)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) {
while(*str)
{
if(islower(*str))
*str = toupper(*str);
else if(isupper(*str))
*str = tolower(*str);
str++;
}
}
void Dummy(char * str) {
//don't change
}
void show(void(* fp)(char *), char * str) {
(*fp) (str);
puts(str);
}
#include<string.h>
#include<ctype.h>
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 *); //指向一个函数,该函数接受一个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()制作一份拷贝
show(pfun, copy);//使用用户选择的函数
}
puts("enter a string(empty line to quit):");
}
puts("bye!");
return 0;
}
char showmenu(void)
{
char ans;
puts("enter menu choice.");
puts("u)uppercase l)lowercase");
puts("t)transposed case o)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) {
while(*str)
{
if(islower(*str))
*str = toupper(*str);
else if(isupper(*str))
*str = tolower(*str);
str++;
}
}
void Dummy(char * str) {
//don't change
}
void show(void(* fp)(char *), char * str) {
(*fp) (str);
puts(str);
}
0 0
- c函数和指针练习
- C 函数指针练习
- c和指针练习
- C和指针-编程练习
- 【C和指针】函数指针
- 《c和指针》函数指针
- 【c/c++】指针函数和函数指针
- C 指针和函数
- C语言练习篇-8函数指针练习
- C语言--指针函数和函数指针
- c 语言 函数指针和指针函数
- C语言-函数指针和指针函数
- C/C++指针函数和函数指针
- 《c和指针》第十二章单链表练习
- 《c和指针》第十二章双链表练习
- C和指针第四章编程练习
- C和指针第二章编程练习
- C和指针第一章编程练习
- 获得手机空间大小
- ArcGIS离线数据编辑【一】
- 各种浏览器下的页面元素xpath获取方法
- Struts2异常!!!(原因LoginAction没有实现相应接口:SessionAware)
- Struts2 ---jsp超链接跳转到action
- c函数和指针练习
- 用Robotium 去实现点击imageview
- Spring下载地址
- 设计模式C++实现(8)——代理模式
- Robotium 不能同时跑多个case
- 2013年度【博客之星评选活动】希望大家支持,投我一票
- Unique Binary Search Trees
- cygwin 环境配置
- 前端代码规则(html5)