深入理解计算机系统 CSAPP 家庭作业11.10

A:

复制代码
//home.html
<form action="/cgi-bin/adder" method="GET">
  <ul>
    <li>
      <label for="n1">n1:</label>
      <input type="text" id="n1" name="n1" /> //name的值决定页面提交后,生成的地址。
    </li>
    <li>
      <label for="n2">n2:</label>
      <input type="text" id="n2" name="n2" /> //name的值决定页面提交后,生成的地址。
    </li>
	<li class="button">
	<button type="submit">Send</button>
	</li>

  </ul>
</form>

home.html放在根目录.那样访问127.0.0.1:XX的时候会直接跳转到这个提交数据的页面.

html文件中的name决定用户点击Send按钮后跳转的地址后的参数名.

复制代码
//adder.c
#include "csapp.h"

int main(void) {
    char *buf, *p;
    char arg1[MAXLINE], arg2[MAXLINE], content[MAXLINE];
    int n1=0, n2=0;

    /* Extract the two arguments */
    if ((buf = getenv("QUERY_STRING")) != NULL) {
	p = strchr(buf, '&');
	*p = '\0';
	sscanf(buf,"n1=%d",&n1); 	//此处决定读取地址的格式
	sscanf(p+1,"n2=%d",&n2);    //此处决定读取地址的格式
    }

    /* Make the response body */
    sprintf(content, "Welcome to add.com: ");
    sprintf(content, "%sTHE Internet addition portal.\r\n<p>", content);
    sprintf(content, "%sThe answer is: %d + %d = %d\r\n<p>", 
	    content, n1, n2, n1 + n2);
    sprintf(content, "%sThanks for visiting!\r\n", content);
  
    /* Generate the HTTP response */
    printf("Connection: close\r\n");
    printf("Content-length: %d\r\n", (int)strlen(content));
    printf("Content-type: text/html\r\n\r\n");
    printf("%s", content);
    fflush(stdout);

    exit(0);
}

adder.c文件中的sscanf中的按格式输入是"n1=%d",这里是和html文件对应的. .adder程序是从html文件生成的地址中读取变量的.

相关推荐
import_random14 小时前
[环境变量]export命令的作用是什么
linux
何妨呀~14 小时前
Linux在VMware上添加磁盘与扩展分区
linux·运维·服务器
CIb0la14 小时前
Linux 6.19-rc1 释出,龙芯为内核加入 32 位架构支持
linux·运维
牛奶咖啡1314 小时前
Linux常见系统故障案例说明并修复解决(上)
linux·linux云计算·如何恢复linux中误删的数据·linux数据删除后的解决方法·分析修复linux无法启动故障·分析修复系统配置错误故障·linux系统资源配置错误修复
南棱笑笑生14 小时前
20251215给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时统计eth1的插拔次数
linux·c语言·开发语言·rockchip
model200514 小时前
Web 服务和 SFTP 用户 操作目录
linux·运维·服务器
刃神太酷啦14 小时前
Linux 进程核心原理精讲:从体系结构到实战操作(含 fork / 状态 / 优先级)----《Hello Linux!》(6)
java·linux·运维·c语言·c++·算法·leetcode
OurBMC社区14 小时前
玩转OurBMC第二十三期:OurBMC之PCIe接口应用(下)
linux·运维·网络
weixin_466814 小时前
K8S-Configmap
linux·容器·kubernetes
初圣魔门首席弟子14 小时前
核心 Bug:客户端与服务器端口不匹配(导致请求无法送达)
linux·网络