当前位置: 首页 > news >正文

C primer plus (第六版)第十一章 编程练习第16题

题目:

16.编写⼀个程序读取输⼊,直⾄读到⽂件结尾,然后把字符串打印出来。该程序识别和实现下⾯的命令⾏参数:

-p         按原样打印

-u         把输⼊全部转换成⼤写

-l         把输⼊全部转换成⼩写

如果没有命令⾏参数,则让程序像是使⽤了-p参数那样运⾏。

思路:

1. 参照之前命令行参数形式程序,题目14, 题目13等的命令行参数形式程序;

2. 借助strncmp()函数,将命令行输入的命令-p, -u, -l进行比较,然后用switch case执行相应的操作;

3. 文件打开与屏幕输出参考原书程序清单8.3 file_eof.c程序:

// file_eof.c --打开⼀个⽂件并显⽰该⽂件#include <stdio.h>#include <stdlib.h>            // 为了使⽤exit()int main(){int ch;FILE * fp;char fname[50];            // 存储⽂件名printf("Enter the name of the file: ");scanf("%s", fname);fp = fopen(fname, "r");    // 打开待读取⽂件if (fp == NULL)            // 如果失败{printf("Failed to open file. Bye\n");exit(1);              // 退出程序}// getc(fp)从打开的⽂件中获取⼀个字符while ((ch = getc(fp)) != EOF)putchar(ch);fclose(fp);                // 关闭⽂件return 0;}

4. 在命令行模式下进行测试。

程序:

/*--------------------------------------------------------------------------------
题目:
16.编写⼀个程序读取输⼊,直⾄读到⽂件结尾,然后把字符串打印出来。该程序
识别和实现下⾯的命令⾏参数:
-p         按原样打印
-u         把输⼊全部转换成⼤写
-l         把输⼊全部转换成⼩写
如果没有命令⾏参数,则让程序像是使⽤了-p参数那样运⾏。
--------------------------------------------------------------------------------
思路:
1. 参照之前命令行参数形式程序,题目14, 题目13等的命令行参数形式程序;
2. 借助strncmp()函数,将命令行输入的命令-p, -u, -l进行比较,然后用switch case执行相应的操作;
3. 文件打开与屏幕输出参考原书程序清单8.3 file_eof.c程序:// file_eof.c --打开⼀个⽂件并显⽰该⽂件
#include <stdio.h>
#include <stdlib.h>            // 为了使⽤exit()
int main()
{int ch;FILE * fp;char fname[50];            // 存储⽂件名printf("Enter the name of the file: ");scanf("%s", fname);fp = fopen(fname, "r");    // 打开待读取⽂件if (fp == NULL)            // 如果失败{printf("Failed to open file. Bye\n");exit(1);              // 退出程序}// getc(fp)从打开的⽂件中获取⼀个字符while ((ch = getc(fp)) != EOF)putchar(ch);fclose(fp);                // 关闭⽂件return 0;
}
4. 在命令行模式下进行测试。
--------------------------------------------------------------------------------*/#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>int main(int argc, char *argv[])
{int choose;                 //程序执行选择FILE * fp;char fname[50];             //文件名数组char ch;if(argc != 2){              //检查是否输入了附加命令printf("Wrong command.\n");return 0;}if ((argc == 2) && !strncmp("-p", argv[1],2))       //strncmp()符合返回0,所以用!strncmp()choose = 1;else if ((argc == 2) && !strncmp("-u", argv[1],2))choose = 2;else if ((argc == 2) && !strncmp("-l", argv[1],2))choose = 3;        elseputs("Wrong command."); //其他附加命令形式提示错误switch (choose){case 1:                 //按原样打印printf("Enter the name of the file: ");scanf("%s", fname);fp = fopen(fname, "r");    // 打开待读取⽂件if (fp == NULL)            // 如果失败{printf("Failed to open file. Bye\n");exit(1);              // 退出程序}// getc(fp)从打开的⽂件中获取⼀个字符while ((ch = getc(fp)) != EOF)putchar(ch);fclose(fp);break;case 2:                 //全部转大写printf("Enter the name of the file: ");scanf("%s", fname);fp = fopen(fname, "r");    // 打开待读取⽂件if (fp == NULL)            // 如果失败{printf("Failed to open file. Bye\n");exit(1);              // 退出程序}// getc(fp)从打开的⽂件中获取⼀个字符while ((ch = getc(fp)) != EOF){ch = toupper(ch);putchar(ch);}fclose(fp);break;case 3:                 //全部转小写printf("Enter the name of the file: ");scanf("%s", fname);fp = fopen(fname, "r");    // 打开待读取⽂件if (fp == NULL)            // 如果失败{printf("Failed to open file. Bye\n");exit(1);              // 退出程序}// getc(fp)从打开的⽂件中获取⼀个字符while ((ch = getc(fp)) != EOF){ch = tolower(ch);putchar(ch);}fclose(fp);break;default:break;}return 0;
}

运行:

1. 因为是采用命令行执行方式,新建一个words.txt文件,输入如下测试文字:

She walks in beauty, like the night
Of cloudless climes and starry skies...
Lord Byron

2. 将编译的程序改为word.exe, 在shell终端命令模式下测试程序;

3. 先输入word -u或-l或-p,进入程序提示输入文件名称,输入words.txt(放在和word.exe同一个目录下面),终端输出结果:

http://www.dtcms.com/a/526042.html

相关文章:

  • 上海制作网站的网站wordpress分享获得优惠
  • 客户做网站嫌贵了国内常用的crm系统
  • 最简单的网站建设wordpress多语种
  • 吉林省交通建设集团有限公司网站做网站的程序
  • 二手购物网站建设方案自媒体app下载
  • 做网站中心学校网页设计模板html代码免费
  • 淘客宝网站备案号如何弄四川建设招标网站首页
  • 使用ssrs矩阵
  • C++ 动态规划(Dynamic Programming)详解:从理论到实战
  • 网站推广软件免费版可tvseo排名第一
  • 盐城市建设工程网站电商直播培训
  • 福永网站推广大名专业做网站
  • 免费网页制作网站制作ppt的软件电脑版免费
  • 网站开发与网页后台开发最有效的线下推广方式
  • 偷的网站怎么做seo湖南省住建云公共信息服务平台
  • C++学习笔记——运算符重载
  • 怎样推广网站开什么店投资小利润高
  • 基于 Prometheus + Alertmanager + Grafana + Loki 的可视化监控与告警系统搭建实战
  • 如何做一款app需要多少钱网站seo收费
  • 电商网站设计公司皆选亿企邦怎么快速排名
  • MySQL使用技巧:字段内容的替换、拼接
  • 2025年数字趋势:重塑公共服务
  • 中企动力全网门户网站微信小程序是什么框架
  • 做企业网站公司游戏客户端开发
  • RPC攻击(Remote Procedure Call Attack)是什么?
  • 广西河池住房和城乡建设厅网站dedecms视频网站模板
  • 基于AI的智能制造成本核算与报价系统 - 技术详解
  • 南阳做网站优化哪家好北京网站设计哪家公司好
  • 网站建设的技术有哪些方面西安市市政建设网站
  • 网站建设参考金利福珠宝的网站建设理念