运行截图:

  • 把cgi编码转为char*类型

     //把cgi编码转为char*类型
    char* change(char *str)
    {
    //分配内存
    char *tempstr = malloc(strlen(str) + ); //x是tempstr的下标,y是str的下标
    int x = , y = ;
    char assii_1, assii_2;
    while (str[y])
    {
    if ((tempstr[x] = str[y]) == '%')
    {
    //获取第一个字符
    if (str[y + ] >= 'A')
    {
    assii_1 = str[y + ] - ; }
    else
    {
    assii_1 = str[y + ] - ;
    }
    //获取第二个字符
    if (str[y + ] >= 'A')
    {
    assii_2 = str[y + ] - ;
    }
    else
    {
    assii_2 = str[y + ] - ;
    }
    tempstr[x] = assii_1 * + assii_2; y += ; }
    x++;
    y++;
    }
    //最后一位置零
    tempstr[x] = '\0';
    return tempstr;
    }
  • 查询
     //查询
    void showlist(char str[])
    { printf("%s%s\n", str,str);
    //文件指针
    FILE *pf;
    //读取
    pf = fopen(strpath, "r"); if (pf == NULL)
    {
    printf("文件打开失败");
    }
    else
    {
    //没有到文件末尾就继续
    while (!feof(pf))
    {
    char readstr[] = { };
    //读取一行
    fgets(readstr, , pf);
    //字符串查找
    char *p = strstr(readstr, str);
    if (p != NULL)
    {
    //输出到网页
    //puts(readstr);
    printf("%s",readstr);
    puts("<br>");
    }
    }
    fclose(pf);
    }
    }
  • 主函数
     printf("Content-type:text/html\n\n");//换行
    
         //等待一下
    system("mkdir 1");
    //获取表单的数据到szpost中 格式 cmd1=%BD%C8&cmd2=abc
    char szpost[] = { };
    gets(szpost);
    printf("%s", szpost); //找到第一个输入框的内容
    char*p1 = strchr(szpost, '&');
    if (p1 != NULL)
    {
    *p1 = '\0';
    }
    //输出相应的信息
    printf("<br>%s", szpost + );
    //cgi编码格式转换为char*类型
    printf("<br>%s", change(szpost + )); //获取第二个输入框的内容
    char *p2 = strchr(p1 + , '&');
    if (p2 != NULL)
    {
    *p2 = '\0';
    }
    printf("<br>%s", p1 + );
    printf("<br>%s", change(p1 + )); //查询
    showlist(change(szpost + ));

完整代码

 #define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include <string.h> //把cgi编码转为char*类型
char* change(char *str)
{
//分配内存
char *tempstr = malloc(strlen(str) + ); //x是tempstr的下标,y是str的下标
int x = , y = ;
char assii_1, assii_2;
while (str[y])
{
if ((tempstr[x] = str[y]) == '%')
{
//获取第一个字符
if (str[y + ] >= 'A')
{
assii_1 = str[y + ] - ; }
else
{
assii_1 = str[y + ] - ;
}
//获取第二个字符
if (str[y + ] >= 'A')
{
assii_2 = str[y + ] - ;
}
else
{
assii_2 = str[y + ] - ;
}
tempstr[x] = assii_1 * + assii_2; y += ; }
x++;
y++;
}
//最后一位置零
tempstr[x] = '\0';
return tempstr;
} //定义路径
char strpath[] = "kaifang.txt"; //查询
void showlist(char str[])
{ printf("%s%s\n", str,str);
//文件指针
FILE *pf;
//读取
pf = fopen(strpath, "r"); if (pf == NULL)
{
printf("文件打开失败");
}
else
{
//没有到文件末尾就继续
while (!feof(pf))
{
char readstr[] = { };
//读取一行
fgets(readstr, , pf);
//字符串查找
char *p = strstr(readstr, str);
if (p != NULL)
{
//输出到网页
//puts(readstr);
printf("%s",readstr);
puts("<br>");
}
}
fclose(pf);
}
} void main()
{
printf("Content-type:text/html\n\n");//换行 //等待一下
system("mkdir 1");
//获取表单的数据到szpost中 格式 cmd1=%BD%C8&cmd2=abc
char szpost[] = { };
gets(szpost);
printf("%s", szpost); //找到第一个输入框的内容
char*p1 = strchr(szpost, '&');
if (p1 != NULL)
{
*p1 = '\0';
}
//输出相应的信息
printf("<br>%s", szpost + );
//cgi编码格式转换为char*类型
printf("<br>%s", change(szpost + )); //获取第二个输入框的内容
char *p2 = strchr(p1 + , '&');
if (p2 != NULL)
{
*p2 = '\0';
}
printf("<br>%s", p1 + );
printf("<br>%s", change(p1 + )); //查询
showlist(change(szpost + ));
}

79.cgi硬盘查询个人信息的更多相关文章

  1. WMI技术介绍和应用——查询硬件信息

    //查询得到系统盘所在硬盘的ID SELECT DiskIndex FROM Win32_DiskPartition WHERE Bootable = TRUE //如何使用WMI查询系统盘所在硬盘的 ...

  2. 实战DeviceIoControl 之四:获取硬盘的详细信息

    Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY或IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有 ...

  3. bat命令查询硬件信息

    bat命令查询硬件信息 50 需求是这样的写一个bat命令,当命令执行的时候,先请用户输入姓名,然后继续执行查询出以下信息并写入一个文件,文件名称随便,文件可以放在与当前命令同一个文件夹下.最终文件中 ...

  4. 实战DeviceIoControl系列之四:获取硬盘的详细信息

    Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有 ...

  5. SQL Server2016 新功能实时查询统计信息

    SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...

  6. 16进制ascii码转化为对应的字符,付ipmitool查询硬件信息

    最近工作需要在用ipmitool查询服务器硬件信息.ipmitool查询硬件信息 比如电源,使用命令: 获取PSU0信息:Ipmitool raw 0x3a 0x71 0x00: 获取PSU1信息:I ...

  7. 【Gerrit】Gerrit cmd query (gerrit命令行查询change信息)

    本文仅展现个人使用情况和理解,英文原址:https://review.openstack.org/Documentation/cmd-query.html 基本使用格式: ssh -p <por ...

  8. Asp.Net MVC4入门指南(9):查询详细信息和删除记录

    在本教程中,您将查看自动生成的Details和Delete方法. 查询详细信息和删除记录 打开Movie控制器并查看Details方法. public ActionResult Details(int ...

  9. SQL查询数据库信息, 数据库表名, 数据库表信息

    SQL查询数据库信息, 数据库表名, 数据库表信息 ---------------------------------------------- -- 以下例子, 在sql_server 中可以直接运 ...

随机推荐

  1. centos中mysql 安装以及配置,建库

    1.检测系统内部有没有安装其他的mysql数据库 rpm -qa | grep mysql 然后如果有的话删除这些mysql yum remove 查出来的所有名字 2.彻底删除系统中mysql的目录 ...

  2. DevExpress Report打印边距越界问题

    DevExpress  Report Print的时候,出现这样的问题:one or more margins are set outside the printable area of the pa ...

  3. AOP 动态添加函数

    Function.prototype.before = function(beforefn) { // 保存原函数的引用 var self = this; // 返回包含了原函数和新函数的代理函数 r ...

  4. Springboot源码——应用程序上下文分析

    前两篇(Spring MVC源码——Root WebApplicationContext 和 Spring MVC源码——Servlet WebApplicationContext)讲述了spring ...

  5. SFINAE 模板替换失败而非报错的应用

    体会这一个例子,检查是否是一个类:P187

  6. Tiling POJ 2506 【大数】

    id=2506">http://poj.org/problem?id=2506 Description In how many ways can you tile a 2xn rect ...

  7. CesiumJS - 3D Tiles BIM

    CesiumJS - 3D Tiles BIM eryar@163.com 1. Introduction CesiumJS is an open-source JavaScript library ...

  8. Elasticsearch之需要注意的问题(es和jdk版本)

    (1)在使用java代码操作es集群的时候 要保证本地使用的es的版本和集群上es的版本保持一致.  (2)保证集群中每个节点的JDK版本和es基本配置一致 这个很简单,不多说.  (3)es集群中j ...

  9. iOS-APP-Icon 图标启动图及名字的设置

    本文讲下appIcon图标.启动图及名字的设置 icon for iOS 图标大小参照苹果官网:https://developer.apple.com/library/ios/qa/qa1686/_i ...

  10. Vectorized implementation

    Vectorization Vectorization refers to a powerful way to speed up your algorithms. Numerical computin ...