|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
通过本贴的例子,你能学到:1.编译静态链接库 2.调用静态链接库 3.头文件的编写 4.函数中的变量作用域 5.指针的应用和理解
一。静态链接库代码:
jlj.cpp
- #include "jlj.h"
- #include "stdlib.h"
- //char * temp;//定义声明全局字符指针变量
- int stringlen(char const * str) //加上const,表示函数不会修改传入的字符数组
- {
- int i=0;//i要在for语句外部定义,否则后面的return中的i会是没有定义,这里需要注意变量的作用域
- for( ;*str!='\0';i++,str++);//用指针自加比用下标运算符快,
- return i;
- }
- char * stringupr(char const * str)
- {
- int i;
- char * strcpy, * temp;
- strcpy=temp=(char *)malloc(100*sizeof(char)); //在动态内存去开辟内存块,其实最好使用完用free函数回收
- for(i=0;*str!='\0';i++,strcpy++,str++)
- if(*str>='a'&&*str<='z')
- *strcpy=*str-0x20;
- else
- *strcpy=*str;
- *strcpy='\0';//标志字符串结束
- return temp;
- }
- char * stringlwr(char const * str)
- {
- int i;
- char * strcpy,* temp;
- strcpy=temp=(char *)malloc(100*sizeof(char));
- for(i=0;*str!='\0';i++,strcpy++,str++)
- if(*str>='A'&&*str<='Z')
- *strcpy=*str+0x20;
- else
- *strcpy=*str;
- *strcpy='\0';
- return temp;
- }
- int stringcmp(char const * str1,char const * str2)
- {
- int i,len,lens;
- if((len=stringlen(str1))<(lens=stringlen(str2)))
- len=lens;
- for(i=0;i<len;i++,str1++,str2++)
- if(*str1==*str2)
- ;//这里可不要加return 0,因为函数结束需要加return语句
- else if(*str1>*str2)
- return 1;
- else
- return -1;
- return 0;
- }
复制代码
jlj.h
- #ifndef LIB_H
- #define LIB_H
- extern "C" int stringlen(char const * str);
- extern "C" char * stringupr(char const * str);
- extern "C" char * stringlwr(char const * str);
- extern "C" int stringcmp(char const * str1,char const * str2);
- #endif
复制代码
二。调用静态链接库代码:
str.cpp
- //
- //编写一个求字符串长度的函数stringlen、字符串大小写转换函数stringupr、stringlwr及字符串比较函数stringcmp,
- //并在main函数中调用并输出结果。编写的包含main函数的源程序以str.cpp命名,stringlen,stringupr,stringlwr
- //,stringcmp函数在jlj.lib中实现
- //
- //////////////////////////////////////////////////////////////////////////
- #include "str.h"
- int main()
- {
- char str1[100],str2[100];
- printf("请输入第一个字符串str1:\n");
- scanf("%s",str1);
- #if (DEBUG==1)
- str1[0]=0;
- #endif
- printf("请输入第二个字符串str2:\n");
- scanf("%s",str2);
- printf("***************************************\n");
- printf("第一个字符串str1长度为:%d\n",stringlen(str1));
- printf("第二个字符串str2长度为:%d\n",stringlen(str2));
- printf("***************************************\n");
- if(stringcmp(str1,str2)==0)
- printf("字符串str1和字符串str2相同\n");
- else
- printf("字符串str1和字符串str2不同\n");
- printf("***************************************\n");
- printf("第一个字符串str1转化大写为:\n");
- printf("%s\n",stringupr(str1));
- printf("***************************************\n");
- printf("第二个字符串str2转化小写为:\n");
- printf("%s\n",stringlwr(str2));
- printf("***************************************\n");
- system("pause");
- return 0;
- }
复制代码
str.h
- #ifndef _SOMEFILE_H_
- #define _SOMEFILE_H_
- #define DEBUG 0//当DEBUG为1时为测试模式
- #include <stdio.h>
- #include <stdlib.h>
- #include "jlj.h"
- #pragma comment( lib, "jlj.lib" ) //指定与静态库一起连接
- #endif
复制代码
源码下载地址
|
|