C/C++与WAP的综合应用
|
C/C++与WAP的综合应用
11.5.1 基本规则 (1) 程序行语句均以分号( ; )结尾,这与C/C++语言的原本要求是一致的。 (2) 使用printf语句来编写(输出)WML的标签或语句,并在WML行后面加上换行符“ ”。基本格式为: printf("……(WML标签或语句行) "); 如果WML标签或语句中有引号等特殊字符,则应采用C/C++的书写规则,比如将引号(")加上斜杠“"”。 下面的语句就说明了使用C/C++的printf编写WML程序的例子:
printf("Content-type: text/vnd.wap.wml "); printf("<?xml version="1.0"?> "); printf("<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"); printf("" "http://www.wapforum.org/DTD/wml_1.1.xml"> "); printf("<wml> "); printf(" <card id="datecard" title="MyWMLCC"> "); …………
与C/C++的其他语句一样,WML的语句也要放在C/C++的函数中予以实现,后面的举例会说明这一点。 (3) 使用C/C++语言编写WML程序时,C/C++的注释符“//”及“/* …… */”仍然可以使用,其他编程规则及预编译文件等均可采用。 (4) 文件最后保存时采用的扩展名为C/C++程序文件及预编译文件的扩展名,不能再使用“.wml”等扩展名。 11.5.2 程序举例 我们这个例程利用CGI功能实现了WAP浏览器的动态输出效果。程序很简单,我们就不过多解释了。程序清单如下:
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> void GenerateCGIHeader(); void GenerateCGIFooter(); /*--------------------------------------------------------------*/ int main(int argc, char* argv[]) { char tmpBuf[128]; char strGET[]="GET"; if (getenv("REQUEST_METHOD") == NULL) { printf("This script is not intended to run from shell. "); return -1; } // 检查request的方法(method)是否是GET strcpy(tmpBuf, getenv("REQUEST_METHOD")); if (strcmp(tmpBuf, strGET) != 0) { printf("This script requires use of GET-method. "); return -1; } /* 显示WML页面内容 */ GenerateCGIHeader(); /* 显示操作系统日期和时间 */ _strtime( tmpBuf ); printf( "OS time:%s ", tmpBuf ); _strdate( tmpBuf ); printf( "OS date:%s ", tmpBuf ); /* 结束WML页面的显示 */ GenerateCGIFooter(); return 0; }
/*--------------------------------------------------------------*/ void GenerateCGIHeader() { /* Generate header for CGI response */ printf("Status: 200 "); printf("Content-type: text/vnd.wap.wml "); printf("<?xml version="1.0"?> "); printf("<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"); printf("" "http://www.wapforum.org/DTD/wml_1.1.xml"> "); printf("<wml> "); printf(" <template> "); printf(" <do type="prev" label="Back"> "); printf(" <prev/> "); printf(" </do> "); printf(" </template> "); printf(" <card id="datecard" title="CGIDate"> "); printf(" <p> "); }
/*--------------------------------------------------------------*/ void GenerateCGIFooter() { /* Generate footer for CGI response */ printf(" </p> "); printf(" </card> "); printf("</wml> "); } /*--------------------------------------------------------------*/ 源代码网供稿. |
