cgi.cpp

来自「这是一些c++例程」· C++ 代码 · 共 54 行

CPP
54
字号
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int htoi(char *);
void main()
{
	int i,n;
	char c;
	printf ("Contenttype: text/plain\n\n");
	n=0;
	if (getenv("CONTENT-LENGTH"))/*检查是否存在环境变量CONTENT-LENGTH*/
		n=atoi(getenv("CONTENT-LENGTH"));/*使用环境变量CONTENT-LENGTH*/
	for (i=0; i<n;i++){
		int is_eq=0;
		c=getchar();
		switch (c){
			case '&':/* 一个Form变量值的结束*/
				c='\n';
				break;
			case '+':/*遇到空格符*/
				c=' ';/*转换为空格*/
				break;
			case '%':{/* 当遇到用其十六进制ASCII码值表示的特殊字符时*/
				char s[3];
				s[0]=getchar();
				s[1]=getchar();
				s[2]=0;
				c=htoi(s);
				i+=2;
				}
				break;
			case '=':/* 当一个Form变量名字的结束时*/
				c=':';
				is_eq=1;
				break;
		};
		putchar(c);/* 将输出传送给Web服务器*/
		if (is_eq) putchar(' ');
	}
	putchar ('\n');
	fflush(stdout);
}
/*将16进制的字串转换为整数类型*/
int htoi(char *s)
{
  char * digits="0123456789ABCDEF";
  if (islower (s[0])) s[0]=toupper(s[0]);
  if (islower (s[1])) s[1]=toupper(s[1]);
  return 16 * (strchr(digits, s[0]) -strchr(digits,'0')
	)
	  +(strchr(digits,s[1])-strchr(digits,'0'));
  }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?