代码用这个: http://wenda.sogou.com/question/28759329.html 再贴一下: #include < stdio.h > #include < stdlib.h > int main(void) { char *data; long m,n; printf("%s%c%c ","Content-Type:text/html;charset=gb2312",13,10); printf("< TITLE >乘法结果< /TITLE > "); printf("< H3 >乘法结果< /H3 > "); data = getenv("QUERY_STRING"); if(data == NULL) printf("< P >错误!数据没有被输入或者数据传输有问题"); else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2) printf("< P >错误!输入数据非法。表单中输入的必须是数字。"); else printf("< P >%ld和%ld的成绩是:%ld。",m,n,m*n); return 0; } 编译运行出.exe的文件 。是否要把后缀名改为.cgi? 此程序的表单如下: < FORM ACTION="/cgi-bin/mult.cgi" > < P >请在下面填入乘数和被乘数,按下确定后可以看到结果。 < INPUT NAME="m" SIZE="5" > < INPUT NAME="n" SIZE="5" >< BR > < INPUT TYPE="SUBMIT" VALUE="确定" > < /FORM > 上面的有点问题,printf第一行最后要有回车/n; 表单中提交方式要为get,看这个解析: GET 和 POST 表单从浏览器发给服务器有两种方法. GET 和 POST. 我们上面谈论的方法,实际是GET,它将数据打包放置在环境变量QUERY_STRING中作为URL整体的一部分传递给服务器。 POST做很多类似GET同样的事情, 不同的地方就是它是分离地传递数据给脚本. 你的脚本通过标准输入获取这些数据. (有些Web服务器是存储在临时文件中.) 这个QUERY_STRING环境变量将不再设置. 那你用那个方法呢? POST是个安全的方法, 尤其如果你的表单中有很多数据的话. 当你用GET, 这个服务器就分配变量QUERY_STRING给所有的表单数据, 但是这个变量可存储量是有限的. 换句话说,如果你有很多数据但是你又用GET,你会丢失很多数据. 如果你用POST, 你可以尽可能多地使用数据, 因为这些数据从来也不分配到一个变量里.