202.linux系统相关函数

本文详细介绍了Linux系统中常用的字符串函数,如strrchr、strchr及getopt系列,同时讲解了如何将字符串转换为整型的strtoull函数。此外,还探讨了Linux系统相关函数getuid和geteuid的作用,以及字节序转换的实现,包括小端字节序转网络字节序和网络字节序转本地小端字节序的函数示例。
摘要由CSDN通过智能技术生成

1 源码中常出现的字符串函数

1.1 strrchr、strch 函数-返回字符在字符串中指针地址

在这里插入图片描述
在这里插入图片描述

1.2 getopt、getopt_long、getopt_long_only

getop函数博客
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 字符串转换为整形的函数strtoull

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>

int main(int argc ,char ** argv)
{

 char *memsuffix, *addrsuffix, *loopsuffix;
 off_t physaddrbase = 0;
 int opt;

 while ((opt = getopt(argc, argv, "p:d:")) != -1){

   switch (opt) {
            case 'p':
                errno = 0;
                physaddrbase = (off_t) strtoull(optarg, &addrsuffix, 16);
                if (errno != 0) {
                    fprintf(stderr,
                            "failed to parse physaddrbase arg; should be hex "
                            "address (0x123...)\n");
                }
		printf("optarg:%s physaddrbase:%ld ,addrsuffix:%s \n",optarg, physaddrbase, addrsuffix);
            case 'd':
                    fprintf(stdout, "optarg: %s \n", optarg);
                break;
	    default: /* '?' */
               fprintf(stdout, "Nothing is done.");
   }

}
   return 0;
}

2 linux系统相关函数

2.1 getuid / geteuid 函数

在这里插入图片描述

geteuid() 函数 返回有效用户。

2.2 日志函数

3 字节序转换

3.1 小端字节序转换为网络字节序

  • float2big
    /**
     * Small endian order to big endian order
     */
    void float2big(float *data_p,uint8_t *dest)
    {
    	dest[0] = ((uint8_t *)data_p)[3];
    	dest[1] = ((uint8_t *)data_p)[2];
    	dest[2] = ((uint8_t *)data_p)[1];
    	dest[3] = ((uint8_t *)data_p)[0];
    }
    

3.2 网络字节序转换本地小端字节序

  • float2small
    int float2small(uint8_t *buf, float * dest)
    {
    
    	((uint8_t*)dest)[0] = buf[3];
    	((uint8_t*)dest)[1] = buf[2];
    	((uint8_t*)dest)[2] = buf[1];
    	((uint8_t*)dest)[3] = buf[0];
    
    	return 0;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangshui516

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值