PHP扩展有2种,ZEND扩展,,再和PHP扩展,,ZEND扩展麻烦,,需要功力强大
PHP扩展简单点,生成.dll文件,动态加入。。。
首先,确定你电脑装上VC++环境,好编译扩展,注意配置好环境变量,在我的电脑,属性,环境变量PATH加上CommonMSDev98Bin(绝对路径)
再次,准备一份PHP源代码+一份二进制php5ts.lib文件
OK,可以开始了:
把源码放在你的任意目录,复制skeleton文件夹命名为 sun, php_skeleton.h、skeleton.c、skeleton.dsp这三个文件,替换内容中所有extname为sun,EXTNAME为SUN
编辑php_skeleton.h文件(头文件)
在PHP_FUNCTION(confirm_sun_compiled);下面编写
P...
ORADBI是我在Oracle OCI(Oracle 调用接口)基础上开发的,支持Oracle8i、9i、10g等数据库。根据Oracle公司的介绍:OCI是如此可靠,以至于Oracle数据库中的每一条SQL语句都通过OCI来执行。当应用程序开发人员需要面向Oracle数据库服务器的最强大的接口时,他们将调用 Oracle调用接口(OCI)。OCI提供了对所有Oracle数据库功能的最全面的访问。OCI API中包含了最新的性能、可伸缩性和安全性特性。
采用OCI的最大好处就是:它是最切近Oracle底层的技术,因此,效率是最高的。同时,它是跨平台的。因此,在我给出的ORADBI库,除了OCI之外,没有其他外...
曾听好多朋友说,C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减。当然了,这是无可非议的,但是C的高效性是其他语言无妨比拟的,所以我们有必要把握其中的精华与奥妙,也就有必要知道其中的基本的数据结构的比如数组,稍微有点深度的堆栈、列表、结构体等的操作和实现。指针也是C语言中的一个很优秀灵活的结构,对它的了解也是必不可少的。 我们一般都认为数组是一维的数据存储结构,因为二位数组或者说矩阵都可以看作是多个一维数组的组合结构,定义在其上的数据存储访问方式是一样的。所以一维数组是其中最基础的最重要的部分,只有理解了此类数据结构的本质才能触类旁通了。 数...
使用libiconv. 本文包括libiconv实用简单介绍及几个例子程序。 libiconv实用非常简单,只有3步: 1.使用 conv_t iconv_open (const char* tocode, const char* fromcode); 打开描述符。 fromcode和tocode为编码类型。conv_open的详细介绍看man iconv_open http://www.gnu.org/software/libi ... v/iconv_open.3.html 2.使用 size_t iconv (iconv_t cd, const char* * inbuf, size_t * inbytesleft, char* * outbuf, size_t * outbytesleft); 进行编码转换。详细介绍看man 3 iconv。 http://www.gnu.org/software/libi ... biconv/iconv.3.html 3.close.int iconv_close (iconv_t cd); http://www.gnu.org/software/libi ... /i...
#include"stdio.h"
main()
{FILE*fp_in,*fp_out;
charinfile[20],outfile[20];
p rintf("Entertheinfilename:\n");
scanf("%s",infile);
p rintf("Entertheoutfilename:\n");
scanf("%s",outfile);
if((fp_in=fopen(infile,"r"))==NULL)
{ printf("Can't openfile%s\n",infile);
getchar();
exit(0);
}
if((fp_out=fopen(outfile,"w"))==NULL)
{ p rintf("can't openfile%s\n",outfile);
getchar();
exit(0);
}
while(!feof(fp_in))fputc(fgetc(fp_in),fp_out);
fclose(fp_in);
fclose(fp_out);
}
以上...
数组初始化
C语言允许在说明时对全局数组和静态局部数组初始化,但不能对非静态局部数组初始化。
与其它变量相似,数组初始化的一般形式如下:
type-specifier array_name[size1]...[sizen]={value-list};
数值表是一个由逗号分隔的常量表。这些常量的类型与类型说明相容,第一个常量存入数组的第一个单元,第二个常量存入第二个单元,等等,注意在括号“ }”后要加上分号。
下列中一个1 0元素整型数组被初始化装入数字1到1 0:
int i[10]={1,2,3,4,5,6,7,8,9,1 0 } ;
这意味着i [ 0 ]的值为1,而i [ 9 ]的值为1 0。
存放字符串的字符数组的初始化可采用如下简化的形式:
char array_name[size] = "string&quo...
概述
在前面各章中,已多次使用过以“#”号开头的预处理命令。如包含命令# include,宏定义命令# define等。在源程序中这些命令都放在函数之外, 而且一般都放在源文件的前面,它们称为预处理部分。
所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统将自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。
C语言提供了多种预处理功能,如宏定义、文件包含、 条件编译等。合理地使用预处理功能编写的程序便于阅读、修改、 移植和调试,也有利于模块化程序设计。...
C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。我们可以把函数看成一个"黑盒子", 你只要将数据送进去就能得到结果, 而函数内部究竟是如何工作的的, 外部程序是不知道的。
外部程序所知道的仅限于输入给函数什么以及函数输出什么。函数提供了编制程序的手段, 使之容易读、写、理解、排除错误、修改和维护。
C程序中函数的数目实际上是不限的, 如果说有什么限制的话, 那就是, 一个C程序中必须至少有一个函数, 而且其中必须有一个并且仅有一个以main为名, 这个函数称为主函数, 整个程序从这个主函数开始执行。
C 语言程序鼓励和提倡人们把一个大问题划分成一个个子问题, 对...
本节专门对第二节曾讲述过的指针作一详述。并介绍Turbo C新的数据类型: 结构、联合和枚举, 其中结构和联合是以前讲过的五种基本数据类型(整型、浮点型、字符型、指针型和无值型)的组合。 枚举是一个被命名为整型常数的集合。
最后对类型说明(typedef)和预处理指令作一阐述。
1、 指 针(point)
学习Turbo C语言, 如果你不能用指针编写有效、正确和灵活的程序, 可以认为你没有学好C语言。指针、地址、数组及其相互关系是C语言中最有特色的部分。规范地使用指针, 可以使程序达到简单明了, 因此, 我们不但要学会如何正确地使用指针, 而且要学会在各种情况下正确地使用指针变量。
1. 指针和地址
1.1 指针基本概念及其指针变量的定义...
本节主要介绍Turbo C2.0标准输入输出函数和文件的输入输出函数。通过本节的学习可以使读者掌握Turbo C2.0的屏幕输出、键盘输入输出以及磁盘文件的读写函数, 并能开始进行一些简单的程序的编写。
控制流程语句主要包括: 条件语句、循环语句和开关语句。
1.1 标准输入输出函数
1.1.1 格式化输入输出函数
Turbo C2.0 标准库提供了两个控制台格式化输入、 输出函数printf( ) 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。
printf()函数用来向标准输出设备(屏幕)写数据; scanf() 函数用来从标准输入设备(键盘)上读数据。下面详细介绍这两个函数的用法。
一、printf()函数
printf()函数是格式化输出函数...
C语言的内部运算符很丰富,运算符是告诉编译程序执行特定算术或逻辑操作的符号。C语言有三大运算符:算术、关系与逻辑、位操作。另外,C还有一些特殊的运算符,用于完成一些特殊的任务。
2.6.1算术运算符
表2-5列出了C语言中允许的算术运算符。在C语言中,运算符“+”、“-”、“*”和“/”的用法与大多数计算机语言的相同,几乎可用于所有C语言内定义的数据类型。当“/”被用于整数或字符时,结果取整。例如,在整数除法中,10/3=3。
一元减法的实际效果等于用-1乘单个操作数,即任何数值前放置减号将改变其符号。模运算符“%”在C语言中也同它在其它语言中的用法相同。...
本节首先介绍Turbo C程序的基本组成部分; 然后介绍Turbo C的数据类型、变量类型、变量的初始化和赋值; 最后介绍Turbo C的有关操作。 通过本节的学习, 可以对Turbo C语言有一个初步认识。
1. Turbo C程序的一般组成部分
Turbo C 2.0 象其它语言一样按其规定的格式和提供的语句由用户编写应用程序。请看下面一段Turbo C源程序。
例1:
/*Example program of Turbo C*/
#include <stdio.h> /*包含文件说明*/
void lgc(void); /*子函数说明*/
char answer; /*定义全程变量*/
int main() /*主函数定义*/
{
char a; /*定义局部变量*/
clrscr();
gotoxy(12,3);
puts("Welcome to use Turbo C2.0!")...
特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决JAVA对本地操作的一种方法就是JNI。 JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。 简单介绍及应用如下: 一、JAVA中所需要做的工作 在JAVA程序中,首先需要在类中声明所调用的库名称,如下: static { System.loadLibrary(“goodluck”); } 在这里,库的扩展名字可以不用写出来,究竟是DLL还...