运行截图:

  • 把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. Red Hat Linux 安装 (本地、网络安装)

    Red Hat Linux 安装 (本地.网络安装) 650) this.width=650;" onclick='window.open("http://blog.51cto.c ...

  2. 分享一段wap框架样式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. BZOJ2337: [HNOI2011]XOR和路径(高斯消元,期望)

    解题思路: Xor的期望???怕你不是在逗我. 按为期望,新技能get 剩下的就是游走了. 代码: #include<cmath> #include<cstdio> #incl ...

  4. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  5. Fedora 29 Linux发行版发布,新功能使Web开发人员的工作更方便

    Matthew Miller宣布发布Fedora 29.这个项目的最新版本是在Fedora Core 1发布后几乎整整15年才发布的,并且可以在多个版本中用于多个体系结构. 最新版本的Fedora已经 ...

  6. 在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试

    原文:在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.欢迎转载.使用.重新发布, ...

  7. TaoCode-淘宝的SVN开源托管平台

    无意中发现的..试用了一下,感觉还不错, 简单说一下怎样使用: 进入 http://code.taobao.org/project/explore/ 注冊完后依据提示新建项目,然后在本地随便新建一个文 ...

  8. 调用google翻译

    1. [代码]maven依赖     ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <dependency>     <groupId>org.a ...

  9. 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

    你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程Linux主机了,那么前面的半 ...

  10. css 浮动 绝对定位 和 相对定位

    html是按照文件流(文档流)的方式加载的,但是全部是文档流的话,很多好看的样式是实现不了的,所以出现了浮动,相对定位,绝对定位的概念. 一.首先,按照文档流和非文档流来分类: ①文档流:就是按照上下 ...