马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
源码下载地址
|