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

#ifndef _upper
#define _upper

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

#endif

upper.c

/*
 根据函数签名分析,desc是调用函数分配内存
 */
#include <stdio.h>
void upper(const char * src,char *desc)
{
    if(src==NULL||desc==NULL)
    {
        printf("传入参数不可以为空!
");
        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个字节大小的字符串!
");
    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("
用户输入的字符串是:%s",desc);
    return 0;
}

运行结果

原文地址:https://www.cnblogs.com/zhanggaofeng/p/5851101.html