嵌入式开发之cgic库---cgi库的使用
很幸运!用C语言写CGI程序还可以有比较简单的方式,那就是我们可以借助使用第三方库CGIC(CGIC是一个功能比较强大的支持CGI开发的标准C库,并支持Linux, Unix 和Windows等多操作系统)来编写,省去了必须自己去遵循CGI规范来码砖的痛苦,使CGI程序的编写变的简单,下面是我第一次使用CGIC库来写的第一个CGI程序:
第一步:从cgic官网(http://www.boutell.com/cgic/ 此网站好像不稳定,偶尔能开)上下载cgic库文件
第二步:在Dev-C++中创建一个console工程,起名为 cgic1
把cgic.h、cgic.c 拷贝到工程cgic1源码文件所在的目录下,然后改写main.c如下:
获取请求中的参数值,我们在提交一个表单(form)时,怎样把表单内的值提取出来呢?比如下面这个表单:
<form action="cgi-bin/cgic1.cgi" method="POST">
<input type="text" name="name" />
<input type="text" name="number" />
<input type="submit" value="Submit" />
</form>
当out.cgi收到请求时,需要把输入框“name”和输入框“number”内的值提取出来,而且不管form中的action是GET还是POST,都要有效。
下面给出示例代码(文件为cgic1.c):
#include <stdio.h>
#include "cgic.h"
#include <string.h>
#include <stdlib.h>
int cgiMain() {
char name[241];
char number[241];
cgiHeaderContentType("text/html");
fprintf(cgiOut, "<HTML><HEAD>\n");
fprintf(cgiOut, "<TITLE>My CGI</TITLE></HEAD>\n");
fprintf(cgiOut, "<BODY>");
cgiFormString("name", name, 241);
cgiFormString("number", number, 241);
fprintf(cgiOut, "<H1>%s</H1>",name);
fprintf(cgiOut, "<H1>%s</H1>",number);
fprintf(cgiOut, "</BODY>\n");
fprintf(cgiOut, "</HTML>\n");
return 0;
}
上面代码涉及到的cgic函数,可顾名思义,很简单不解释了,比直接用c写简洁很多,更详细的cgic库用法可上其官网查询。结果测试运行正常!
注:编译时候,出了个错误,报指向 cgic.c 中引入的某个头文件找不到,还以为windows平台下不能运行cgic或是我下载的版本不对,因为官网打不开,上面的cgic.h、cgic.c是在源码搜索网站http://code.ohloh.net/ 下找到的,下载的cgic库可能被别人改过,后来重新搜索,下载了另一个cgic库,编译通过!
参考http://blog.chinaunix.net/uid-20620288-id-3139686.html
http://blog.csdn.net/ajrm0925/article/details/8813384
http://blog.csdn.net/tiantang46800/article/details/7530930 cgic库的移植和使用
嵌入式开发之cgic库---cgi库的使用的更多相关文章
- 嵌入式开发之davinci--- ccs 编译lib库
(1)ccs 简介 (2)ccs 输出格式coff elf (3)ccs 编译lib 算法库 (4)ccs 存在的问题 ---------------------------------------- ...
- 嵌入式开发之makefile---交叉编译静态库和动态库的生成和调用
c和cpp 混合的动态库生成: $(LIBSO): $(COBJS) $(CPPOBJS) $(CPP) -shared -o $@ $^ $(LIBS) ////////////////////// ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的图像处理算法优化库vlib
The Texas Instruments VLIB is an optimizedImage/Video Processing Functions Library for C programmers ...
- iOS开发之C语言函数库
在iOS开发中不可避免的需要使用数学函数进行计算,我们可以使用C标准库头文件中定义的数学常量宏及数学函数来进行基本的数学计算操作,这些C函数都可以在微软的MSDNAPI库中找到.(https://ms ...
- Android开发之《libyuv库的使用》
转自:http://bashell.nodemedia.cn/archives/build-google-libyuv-with-ndk-for-android.html 官方网站:https://c ...
- 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102
1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScale+ MPSoC架构 Xilinx新一代Zynq针对控制.图像和网络应用推出了差异化的产品系,这 ...
- 嵌入式开发之NorFlash 和NandFlash
http://blog.csdn.net/tigerjibo/article/details/9322035 [摘要]:作为一个嵌入式工程师,要对NorFlash 和NandFlash要有最起码的认知 ...
- Jetty 开发指南: 嵌入式开发之HelloWorld
Jetty 嵌入式之 HelloWorld 本节提供一个教程,演示如何快速开发针对Jetty API的嵌入式代码. 1. 下载 Jar 包 Jetty被分解为许多jar和依赖项,通过选择最小的jar集 ...
- 嵌入式开发之hi3519---GPIO 驱动
在一个嵌入式系统中使用最多的莫过于 通用输入输出 GPIO口.看到论坛中经常有朋友问海思为什么没有提供GPIO驱动.其实不然. 在海思SDK xxx/osdrv/tools/board_tools/ ...
随机推荐
- UGUI 点击穿透问题
unity上 用 做游戏欢迎界面上通用的ui,然后导到游戏里面直接用,但发现游戏里面是用ngui的,点击ugui 的ui 会穿透过去 ngui会响应,原本模型的点击处理也会响应 我用的 unity 版 ...
- bzoj 4034 [HAOI2015]树上操作 入栈出栈序+线段树 / 树剖 维护到根距离和
题目大意 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中所有点的点权都 ...
- 【BZOJ1579】Revamping Trails(分层图,最短路,堆)
题意:每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M<=50,000)条双向泥土道路,编号为1..M. 道路i连接牛棚P1_i和P2_i (1 <= ...
- yii model层操作总结
yii model层操作属性和方法总结. tableName – 设置Model所对应的表名,例如: public function tableName(){return 'gshop_order_e ...
- AC日记——图灵机游戏 codevs 2292
2292 图灵机游戏 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description [Shadow 1]第二题 ...
- 关于xcode 9.0数组问题的遇到的坑
1.最近一直在忙着做项目,今天就来总结最近这段时间遇到的一些比较麻烦的问题.有时候也是颇感无奈. 有句话说的好.人不要总在一棵树上吊死.去旁边那棵树上也可以试试.好了不扯了.直接进入正题吧! 先来阐述 ...
- js拖拽效果的实现
1.最基础的写法 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> < ...
- Go语言入门——数组、切片和映射(下)
上篇主要介绍了Go语言里面常见的复合数据类型的声明和初始化. 这篇主要针对数组.切片和映射这些复合数据类型从其他几个方面介绍比较下. 1.遍历 不管是数组.切片还是映射结构,都是一种集合类型,要从这些 ...
- 编译lua
http://www.lua.org/ 新建一个 static library 工程,把解压得到的目录下的src子目录中的所有.h和.c文件拷贝到新工程目录下. 工程中删除自动生成的 main.c 文 ...
- :jQuery实例【DEMO】
前言: 今天2月最后一天,写一篇jQuery的几个实例,算是之前前端知识的应用.写完这篇博客会做一个登陆界面+后台管理(i try...) 一.菜单实例 最开始的界面: 点击菜单三后的界面: 二. ...