#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cgic.h"

void HandleSubmit();// 提交
void Name();
void ShowForm();//页面的显示

int cgiMain()
{
cgiHeaderContentType("text/html");
fprintf(cgiOut, "<HTML><HEAD>\n");
fprintf(cgiOut, "<TITLE>cgic test</TITLE></HEAD>\n");
fprintf(cgiOut, "<BODY><H1>cgic test</H1>\n");
/* If a submit button has already been clicked, act on the
submission of the form. 提交表单*/
if (cgiFormSubmitClicked("1saveenvironment") == cgiFormSuccess)
{
HandleSubmit();
fprintf(cgiOut, "<hr>\n");
}
/* Now show the form */
ShowForm();
/* Finish up the page */
fprintf(cgiOut, "</BODY></HTML>\n");
return 0;
}
void HandleSubmit()// 提交
{
Name();
}

void Name()
{
char name[81];
char age[81];
cgiFormStringNoNewlines("name", name, 81);//函数的功能就是取的并显示由用户输入的name
cgiFormStringNoNewlines("age", age, 81);//函数的功能就是取的并显示由用户输入的name
fprintf(cgiOut, "Name: ");
cgiHtmlEscape(name);//将得到的name值显示到屏幕
fprintf(cgiOut, "age: ");
cgiHtmlEscape(age);
fprintf(cgiOut, "<BR>\n");

FILE * file_fa = fopen("a.txt","w+");
fwrite(name,strlen(name),1,file_fa);
fwrite(age,strlen(age),1,file_fa);
}

void ShowForm()//页面的显示
{
fprintf(cgiOut, "<!-- 2.0: multipart/form-data is required for file uploads. -->");
fprintf(cgiOut, "<form method=\"POST\" enctype=\"multipart/form-data\" ");

fprintf(cgiOut, " action=\"");
cgiValueEscape(cgiScriptName);//cgiScriptName调用程序的名字
fprintf(cgiOut, "\">\n");

//fprintf(cgiOut, "<p>Text Field containing Plaintext\n<p>");

fprintf(cgiOut, "<input type=\"text\" name=\"name\">Your Name\n");

fprintf(cgiOut, "<input type=\"text\" name=\"age\">Your age\n");
// fprintf(cgiOut, "<input type=\"text\" name=\"age\">");

fprintf(cgiOut, "<input type=\"submit\" name=\"1saveenvironment\" value=\"Save Environment\">\n");
//name 必须和cgiFormSubmitClicked("1saveenvironment")中函数参数一致
fprintf(cgiOut, "</form>\n");
}

功能将得到的name和age写到a.txt中

对cgic的理解——name选项的更多相关文章

  1. 深入理解Loadrunner中的Browser Emulation

    深入理解Loadrunner中的Browser Emulation 深入理解Loadrunner中的Browser Emulation 3E?']V'VgB5n*S0一:基本介绍51Testing软件 ...

  2. 关于GCC的理解——On the understanding of the GCC

    GCC 有超过100个的编译选项可用. 这些选项中的许多你可能永远都不会用到, 但一些主要的选项将会频繁用到. 很多的 GCC 选项包括一个以上的字符. 因此你必须为每个选项指定各自的连字符, 并且就 ...

  3. tcpdump 选项及过滤规则

    tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap (1)t ...

  4. Setsockopt选项

    讨论 Setsockopt选项 http://c.chinaitlab.com/cc/ccjq/200806/752042_3.html 总而言之,如果你肯定能一起发送多个数据集合(例如HTTP响应的 ...

  5. 理解Loadrunner中的Browser Emulation Simulate

    案例 测试环境描述: 客户端 5台 Windows2000机器.服务器端  20台机器 一台F5(负载均衡设备,提供一个唯一的IP供客户端访问) 客户端绑定Host后,使用域名http://www.* ...

  6. Linux tcpdump命令详解

    tcpdump官网:http://www.tcpdump.org/ 转载于:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.ht ...

  7. Linux tcpdump 详解

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  8. linux运维中的命令梳理(四)

    ----------管理命令---------- ps命令:查看进程 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不 ...

  9. Linux tcpdump 命令详解

    简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的& ...

随机推荐

  1. Sort Integers II

    Given an integer array, sort it in ascending order. Use quick sort, merge sort, heap sort or any O(n ...

  2. Hbase(三) hbase协处理器与二级索引

    一.协处理器—Coprocessor 1. 起源Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执 行求和.计数.排序等操作.比如,在旧版本的(<0.92)Hb ...

  3. Codeforces 744C. Hongcow Buys a Deck of Cards(状压DP)

    这题的难点在于状态的设计 首先显然是个状压,需要一维表示卡的状态,另一维如果设计成天数,难以知道当前的钱数,没法确定是否能够购买新的卡,如果设计成钱数,会发现状态数过多,空间与时间都无法承受.但是可以 ...

  4. 【DP】CF859C Pie Rules

    https://www.luogu.org/problemnew/show/CF859C Description 有一个长度为\(n\)的序列,Alice和Bob在玩游戏.Bob先手掌握决策权. 他们 ...

  5. lable标签的妙用

    最近在设计网页时,只要一加入表单或表单对象,文本框等等,就会在代码中加入一个<label></label>,一直没明白这个label是做什么的,今天正好看到了解释: Label ...

  6. wget命令下载文件

    wget -r -N -l  -k http://192.168.99.81:8000/solrhome/ 命令格式: wget [参数列表] [目标软件.网页的网址] -V,–version 显示软 ...

  7. JAVA多线程提高十二:阻塞队列应用

    一.类相关属性 接口BlockingQueue<E>定义: public interface BlockingQueue<E> extends Queue<E> { ...

  8. AJAX流程

    创建一个XHR对象 var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari ...

  9. CSS浏览器兼容问题集-第四部分

    12.FireFox下如何使连续长字段自动换行 众所周知IE中直接使用 word-wrap:break-word 就可以了, FF中我们使用JS插入 的方法来解决 <style type=&qu ...

  10. el-option > 1500 条时的卡顿问题

    本文地址: http://www.cnblogs.com/veinyin/p/8473938.html  在做项目时遇到的一个问题. 项目是基于 Vue 框架做的. select 的 option 是 ...