首页 > 代码库 > Linux Linux程序练习六

Linux Linux程序练习六

题目:实现一个so库文件名称为listupper.so,so文件中实现一个函数,函数名为void upper(const char *src, char *desc),
调用update后将参数src所指向的字符串中所有字符转化为大写字母,结果放入desc字符串中。分别用C语言编写一个程序test1,
调用libupper.so中的upper函数,用C++语言编写一个程序test2,调用libupper.so中的upper函数。

 

upper.h

//兼容g++编译器#ifdef __cplusplusextern "C"{#endifvoid upper(const char * src,char *desc);#ifdef __cplusplus}#endif

 

upper.c

/* 根据函数签名分析,desc是调用函数分配内存 */#include <stdio.h>void upper(const char * src,char *desc){    if(src=http://www.mamicode.com/=NULL||desc==NULL)    {        printf("传入参数不可以为空!\n");        return;    }    while(*src)    {        if(*src>96&&*src<123)        {            //说明该字符是小写字母            *desc++=*src-32;            src++;        }else        {            *desc++=*src++;        }    }}

技术分享

 

test1.c

#include <stdio.h>#include <unistd.h>#include "upper.h"int main(int arg,char * args[]){    printf("请输入不超过100个字节大小的字符串!\n");    char buf[100]={0};    char desc[100]={0};    int num=0;    num=read(STDIN_FILENO,buf,sizeof(buf));    if(num==0) return 0;    upper(buf,desc);    printf("\n用户输入的字符串是:%s",desc);    return 0;}

技术分享

 

运行结果

技术分享

Linux Linux程序练习六