linux下运行strlwr和strupr函数报错
无    2016-09-07 18:39:07    214    0    0
tianwaifeixian

Linux_C 编程实战里面有个案例

把字符串当中的字符全部变化为大写或者小写的函数 strupr() strlwr()

这里有个问题就是Linux系统的/usr/include/目录下面的头文件string.h strings.h里面均没有(   strupr() strlwr()   )这两个函数

网上看了一下说是 这两个函数不是C标准库里面的函数 晕了 既然不是,教材上为毛不说一下?

要实现在Linux系统里面调用这两个函数得自己写头文件

把头文件放在和   xxx.c文件同一个目录里面编译 这是比较合适的一个方法 

还有一个方法就是 把写好的这两个头文件放到/usr/include/目录下面 这里有一点得注意

当前用户的环境变量里面必须包含/urs/include/这个目录 要不然编译依然无法进行(或者改变该目录下文件的属主?)

查看当前用户的环境变量

 

lll@suse:~/src> echo $PATH
/usr/lib64/jdk1.8.0_101//bin:/usr/lib64/jdk1.8.0_101//jre/bin:/home/lll/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/sbin/

 

这里没有包含刚才的目录

临时添加的话

lll@suse:~/src> export PATH=$PATH/usr/include
lll@suse:~/src> echo $PATH
/usr/lib64/jdk1.8.0_101//bin:/usr/lib64/jdk1.8.0_101//jre/bin:/home/lll/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/sbin//usr/include

长久用的话 需要把牠添加到当前用户的.bashrc里面

两个头文件代码:(网上拷贝别人的)

strlwr:

 

char *strlwr(char *s)
{
 char *str;
 str = s;
 while(*str != '\0')
 {
  if(*str >= 'A' && *str <= 'Z') {
     *str += 'a'-'A';
 }
 str++;
 }
 return s;
 }

 

strupr:

char *strupr(char *str)
{
    char *ptr = str;

    while(*ptr != '\0')
    {
        if(islower(*ptr))
        *ptr = toupper(*ptr);
        ptr++;
    }

    return str;
}

上一篇: 人际交往中让我受益的五句话

下一篇: 解决Tomcat开启后无法登录Manager App

214 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航