hnuster!看了很多关于该题的解法但是我们发现,我们竟然下不了手!!!第一个问题:制作属于自己名字的txt(即xds.txt)。这个都不会,可是网上的其他解法都一笔带过了,琢磨了半天弄清楚的。
下面我们详细介绍一下如何制作属于自己名字的txt文件以及要设计的程序应该具备怎样的功能。
一、首先我们打开Lishu56.txt文件(一般在2020春季《C语言课程设计》任务书及附件\电子印章题目2的示例参考程序里面),我们发现它就像字典一样,里面含有各种字,但是我们如何找到我们需要的字体呢?(自己肉眼找是不可能的,里面的字太多了,像字典一样)
我们仔细观察发现每个字前面都有特定的编码。例如:

也就是说一定存在像字典目录的文件
经过寻找我们发现“汉字内码扩展规范(GBK).txt“这个文件(在2020春季《C语言课程设计》任务书及附件\电子印章题目1的示例参考程序中)打开我们发现了每个字的编码格式:

我们要找”病“这个字,看到它的编号为:B2A1.
那么我们怎么找到我们需要的字编码,总不能一直翻吧。我想到的方法是,把汉字内码扩展规范(GBK).txt内容复制到word中进行导航查找。

输入我们想要的字,然后找到字对应的编码。
再把Lishu56.txt复制到word,把我们找到的编码使用导航查找找到需要的字位置。然后把字复制到新建的txt中来创造属于自己的txt文件!
二、现在我们分析我们需要设计的代码要具备怎样的功能。
我们翻看资料知道我们要设计一个像mySeal.exe的程序。它是怎样的功能?我们按照只是打开命令窗口;

(不知道的可以看)打开命令窗口的方式:
1.按下win+r键
2.在弹出窗口中输入cmd,点击确定。
3.在命令窗口中输入:cd 制定文件夹的路径。(这个文件夹中含有myseal.exe程序)如:cd  C:\Users\lsh\Desktop\csdn\2020春季《C语言课程设计》任务书及附件\电子印章题目1的示例参考程序(注意是在C盘,如果是d盘,需要使用d: 如:C:\Users\lsh>d:)

在命令窗口指定文件夹处输入mySeal xds.txt xds.bmp。观察文件夹,生产了一个bmp文件!
通过上面的的分析发现,我们需要设计的程序就是读取txt文件内容,并建立相应的bmp文件。
另外提一下,那个Hedit文件是真的没多大作用。它可以打开你生产的bmp文件,然后你从中可以获取宽和高。把老师给的代码中宽高改一下就可以了。
下面是我的代码(代码就不用详述了,都是一些文件操作上的知识)

#include <stdio.h>
#include <string.h>
#include<stdlib.h>
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;   /****  The file header of bmp file 位图文件头*****/
//#include <pshpack2.h> //This file turns 2 byte packing of structures on, then sizeof(BITMAPFILEHEADER)=14, otherwise sizeof(BITMAPFILEHEADER)=16
typedef struct tagBITMAPFILEHEADER {   WORD bfType;   DWORD bfSize;   WORD bfReserved1;   WORD bfReserved2;DWORD bfoffBits;
} BITMAPFILEHEADER;
//#include <poppack.h> //This file turns packing of structures off /****  The information header of bmp file 位图信息头*****/
typedef struct tagBITMAPINFOHEADER {   DWORD biSize;   DWORD biWidth;   DWORD biHeight;   WORD  biPlanes;   WORD  biBitCount;      DWORD biCompress;DWORD biSizeImage;   DWORD biXPeIsPerMeter;   DWORD biYPeIsPerMeter;   DWORD biCIrUsed;   DWORD biClrImprotant;
} BITMAPINFOHEADER;   /****  The RGB data of bmp file 图像RGB数据*****/
typedef struct tagRGBDATA{   BYTE rgbBlue;       BYTE rgbGreen; BYTE rgbRed;
} RGBDATA;
int main(int argc, char *argv[])
{RGBDATA *bmpData=NULL;    //图像数据指针FILE *fp;               //BMP文件指针long i,j,k,len;long width=144;            //图像宽度long height=144;     //图像高度long dataSize=width*height;BITMAPFILEHEADER bmfHeader;BITMAPINFOHEADER bmiHeader;if(argc<3){printf("\n    请指定您要生成的BMP文件名!\n");printf("\n    方法1:在cmd窗口输入: 电子印章.exe  xxxx.txt xxxx.bmp 后回车执行!\n");printf("\n    方法2:在VC的工程设置中添加参数: xxxx.txt xxxx.bmp 后编译运行!\n");printf("\n    功能: 根据设定红绿蓝三色分量的值,控制显示不同的彩色条纹!\n\n");exit(0);}//导入txt数据char a[300][300]; //定义一个bai二维数组int c=0;FILE *fq;                                      /* 定义指向文件的指针*/if((fq=fopen(argv[1],"r"))==NULL)              /*打开一个二进制文件,为读方式*/{printf("文件打开失败!\n");return 0;}while(!feof(fq)){if(1!=fscanf(fq,"%s",a[c]))break;c++; //打印数据到二维数组中}char b[300][300];int len2,m,k1=0,l;len2=strlen(a[0]);int j2,i2;for(i2=0;i2<c;i2++){k1=0;for(j2=0;j2<len2;j2++){if(a[i2][j2]=='_'){b[i2][k1]='0';k1++;}if(a[i2][j2]=='X'){b[i2][k1]='1';k1++;}}b[i2][k1]=='\0';printf("%s\n",b[i2]);}len2=strlen(b[0]);fclose(fq);//第一步:用命令行中给出的文件名新建一BMP文件,此时还是一个空文件if((fp=fopen(argv[2], "wb+"))==NULL){printf("Cannot open BMP file!");exit(0);}//第二步:置文件头数据并写入BMP文件bmfHeader.bfType=0x4d42;bmfHeader.bfSize=14+40+width*height*3;bmfHeader.bfReserved1=0;bmfHeader.bfReserved2=0;bmfHeader.bfoffBits=0x36;fwrite(&bmfHeader, sizeof(BITMAPFILEHEADER), 1, fp);//第三步:置信息头数据并写入BMP文件bmiHeader.biSize=40;bmiHeader.biWidth=width;bmiHeader.biHeight=height;bmiHeader.biPlanes=1;bmiHeader.biBitCount=24;bmiHeader.biCompress=0;bmiHeader.biSizeImage=width*height*3;bmiHeader.biXPeIsPerMeter=0;bmiHeader.biYPeIsPerMeter=0;bmiHeader.biCIrUsed=0;bmiHeader.biClrImprotant=0;fwrite(&bmiHeader, sizeof(BITMAPINFOHEADER), 1, fp);//第四步:置图像RGB数据并写入BMP文件//分配足够内存,让bmpData指向这块内存,用于存放图像各象素点的RGB分量值if((bmpData=(RGBDATA*)malloc(width*height*3))==NULL){printf("bmpData memory malloc error!");}//先在bmpData所指内存中置图像RGB数据,然后将所有数据写入BMP文件for(i=0;i<height;i++){for(j=0;j<width;j++){k=(height-i-1)*width + j;//计算bmp图片中第i行第j列图像数据在bmpData[]数组中的位置if(i>=(height-c)/2&&i<=(height/2+c/2)-1&&j>=(width-len2)/2&&j<=(width/2+len2/2)-1&&b[i-(height-c)/2][j-(width-len2)/2]=='0'  ){//白色bmpData[k].rgbBlue=255;bmpData[k].rgbGreen=255;bmpData[k].rgbRed=255;}else //其他红色{bmpData[k].rgbBlue=0;bmpData[k].rgbGreen=0;bmpData[k].rgbRed=255;}}}fwrite(bmpData,sizeof(RGBDATA),dataSize,fp);printf("\n    ********************************************************************************\n");printf("\n         感谢您使用BMP图片文件制作DEMO程序                 \n");printf("\n             作者:***                 \n");printf("\n             日期:2020年6月20日                 \n");printf("\n             目的:编制印章生成程序时!       \n");printf("\n             功能:根据设定红绿蓝三色分量的值,控制显示不同的彩色条纹!\n\n");printf("\n    ********************************************************************************\n\n");free(bmpData); //释放bmpData所指的内存空间bmpData=NULL;    //置bmpData为空指针fclose(fp);       //关闭fp所指文件}

如果有时间的话,可以认真学一下怎么操作

问题 U: 任务3-1:编程实现根据指定文本生成电子印章(超详细教程)相关推荐

  1. 编程实现根据指定文本生成电子印章

    在材料demo中有如下改动 1.通过hedit可以看到示例程序生成的图片的长宽参数都是00 00 00 80也就是8*16=128 在文件头的地方将长宽修改为128 2.因为要输入三个参数 且顺序为程 ...

  2. 编程实现根据指定汉字生成电子印章

    编程实现根据输入的汉字制作不同的电子印章 具体要求: 思路: 程序代码: CB运行结果: 使用流程: 第一步:首先在用户目录下建立不同字体的查询表,和空的 bmp 格式文件 第二步:Windows+R ...

  3. Java并发编程Future超详细教程

    非原创,自己保存学习用,传播请参考原文. 原文链接:Java并发编程Future超详细教程 前言 创建线程有几种方式?这个问题的答案应该是可以脱口而出的吧 继承 Thread 类实现 Runnable ...

  4. Python编程:实现词云生成(附详细源码)

    Python编程:实现词云生成(附详细源码) 词云是一种数据可视化的方式,它可以用来展示某个主题下的主要关键词汇.在Python中,我们可以使用 wordcloud 库来实现词云的生成.本文将带您一步 ...

  5. 【libuv高效编程】libuv学习超详细教程3——libuv事件循环

    文章目录 libuv系列文章 libuv事件循环 uv_loop_t demo uv_loop_init() uv_run() uv_loop_close() 参考 例程代码获取 libuv系列文章 ...

  6. 【libuv高效编程】libuv学习超详细教程1——libuv的编译与安装

    文章目录 libuv简介 下载libuv 安装必要的依赖 拉取libuv源码 编译使用 验证编译安装是否完成 简单实用 libuv简介 libuv 是一个高性能的,事件驱动的I/O,并且支持多平台的网 ...

  7. 点亮第一盏灯的c语言编程,单片机点亮第一盏灯实验详细教程

    第一个实验:keil软件使用与点亮人生的第一只发光二极管 1.001.jpg (23.15 KB, 下载次数: 78) 2017-5-20 17:27 上传 本章详细介绍单片机程序常用编译软件 Kei ...

  8. Python编程从入门到实践笔记(超详细的精华讲解+内有2021最新版本代码)

    编程环境的安装请见我个人博客https://tianjuewudi.gitee.io/的另两篇文章<Pycharm安装方法>及<Pycharm配置和使用教程>,下面以你能正常使 ...

  9. Java并发编程(一)—— FutureTask超详细教程

    一.前言 创建线程有几种方式?这个问题的答案应该是可以脱口而出的吧: 继承 Thread 类 实现 Runnable 接口 但这两种方式创建的线程是属于三无产品: 没有参数 没有返回值 没办法抛出异常 ...

最新文章

  1. xss漏洞的poc与exp
  2. 光子浏览器_烟台招聘信息烟台光子信息科技有限公司招聘(五险一金,餐补)...
  3. 卡尔曼滤波simulink例子,位移和速度2变量估计
  4. Jquery +Ajax 请求Json文件,绘制Echarts 上下两个堆叠折线图
  5. Scrum指南更新:Ken Schwaber、Jeff Sutherland访谈
  6. 在写csdn博客时,如何实现用超链接进行页面内跳转?
  7. 指数加权移动平均模型_常见收益模型
  8. 随机排列算法(Fisher-Yates)
  9. Mac版Illustrator CS6破解版
  10. allure报告定制
  11. Android 3D滑动菜单完全解析,实现推拉门式的立体特效
  12. android全屏保存壁纸,android设置全屏壁纸代码
  13. 有哪些IT初学者(新人)成长为技术大牛的真实经历?
  14. 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上
  15. 【软件工程习题(含参考答案)】总复习
  16. MySQL运维篇之分库分表
  17. java学习第188天,javaWeb学习第47天,复习第23天;p257-262(08/21)-4h
  18. 神犇营my0007:输出 hello world
  19. PAT乙级考试经验分享
  20. VirtualBox下ubuntu安装中文输入法

热门文章

  1. 如果你不能或者不愿在大城市定居,你的后代会走你同样的路
  2. WPS删除第一页的页眉
  3. 形容时间过得快的名言名句有哪些
  4. 华为5g网络工程师怎么样?需要常年出差吗?有发展空间吗
  5. php如何设置虚拟主机,如何让虚拟主机支持php
  6. 软件测试文档编写步骤
  7. Android手机如何提取系统内核(boot.img镜像文件提取)
  8. 【NGUI】使用NGUI实现按钮和字体都有颜色变化的效果
  9. 阀盖机械加工工艺规程课程设计(说明书+任务书+CAD零件图、毛坯图+工序卡+过程卡)
  10. halcon测量硬币真实直径