linux中字符串转换函数 simple_strtoul



http://blog.csdn.net/tommy_wxie/article/details/7480087

Linux内核中提供的一些字符串转换函数:

lib/vsprintf.c

  1.  1. unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)    
  2.  2. unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)    
  3.  3. long simple_strtol(const char *cp, char **endp, unsigned int base)    
  4.  4. long long simple_strtoll(const char *cp, char **endp, unsigned int base)    
  5.  5. int strict_strtoul(const char *cp, unsigned int base, unsigned long *res)    
  6.  6. int strict_strtol(const char *cp, unsigned int base, long *res)    
  7.  7. int strict_strtoull(const char *cp, unsigned int base, unsigned long long *res)    
  8.  8. int strict_strtoll(const char *cp, unsigned int base, long long *res)    
  9.  9. int sprintf(char *buf, const char *fmt, ...)    
  10. 10. int snprintf(char *buf, size_t size, const char *fmt, ...)    
  11. 11. int sscanf(const char *buf, const char *fmt, ...)    
   1. unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)  
   2. unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)  
   3. long simple_strtol(const char *cp, char **endp, unsigned int base)  
   4. long long simple_strtoll(const char *cp, char **endp, unsigned int base)  
   5. int strict_strtoul(const char *cp, unsigned int base, unsigned long *res)  
   6. int strict_strtol(const char *cp, unsigned int base, long *res)  
   7. int strict_strtoull(const char *cp, unsigned int base, unsigned long long *res)  
   8. int strict_strtoll(const char *cp, unsigned int base, long long *res)  
   9. int sprintf(char *buf, const char *fmt, ...)  
  10. int snprintf(char *buf, size_t size, const char *fmt, ...)  
  11. int sscanf(const char *buf, const char *fmt, ...)  


unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)
功能:将一个字符串转换成unsigend long long型数据。
返回:返回转换后数据。

参数:cp指向字符串的开始,endp指向分析的字符串末尾的位置,base为要用的基数(进制数),base为0表示通过cp来自动判断基数,函数自动可识别的基数:‘0x’表示16进制,‘0’表示8进制,其它都认定为10进制。函数可转换成数字的有效字符为:[0,f]。举例:cp = “0x12str”,base = 0,则返回unsigned long long为18,*endp = “str”。 参数下同。

  1. static ssize_t led_brightness_store(struct device *dev,  
  2.         struct device_attribute *attr, const char *buf, size_t size)  
  3. {  
  4.     struct led_classdev *led_cdev = dev_get_drvdata(dev);  
  5.     ssize_t ret = -EINVAL;  
  6.     char *after;  
  7.     unsigned long state = simple_strtoul(buf, &after, 10);  
  8.     size_t count = after - buf;  
  9.   
  10.     if (isspace(*after))  
  11.         count++;  
  12.   
  13.     if (count == size) {  
  14.         ret = count;  
  15.   
  16.         if (state == LED_OFF)  
  17.             led_trigger_remove(led_cdev);  
  18.         led_set_brightness(led_cdev, state);  
  19.     }  
  20.   
  21.     return ret;  
  22. }  
static ssize_t led_brightness_store(struct device *dev,
		struct device_attribute *attr, const char *buf, size_t size)
{
	struct led_classdev *led_cdev = dev_get_drvdata(dev);
	ssize_t ret = -EINVAL;
	char *after;
	unsigned long state = simple_strtoul(buf, &after, 10);
	size_t count = after - buf;

	if (isspace(*after))
		count++;

	if (count == size) {
		ret = count;

		if (state == LED_OFF)
			led_trigger_remove(led_cdev);
		led_set_brightness(led_cdev, state);
	}

	return ret;
}



unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)
功能:将一个字符串转换成unsigend long型数据。
返回:返回转换后数据。

int strict_strtoul(const char *cp, unsigned int base, unsigned long *res)
功能:将一个字符串转换成unsigend long型。
返回:转换成功返回0,否则返回负。res指向转换后的unsigned long数据。

说明:该函数对cp指向的字符串严格要求,cp指向的字符串必须为真正的unsigned long形式的字符串。字符串必须以“0x”、“0”、[0,f]开始,中间全部为有效的字符[0,f],否则返回为负。它会处理字符串最后的“\n”字符。下同


long long simple_strtoll(const char *cp, char **endp, unsigned int base)
功能:将一个字符串转换成sigend long long型。
返回:返回转换后数据。


int strict_strtol(const char *cp, unsigned int base, long *res)
功能:将一个字符串转换sigend long型。
返回:转换成功返回0,否则返回负。res指向转换后的signed long数据。

int strict_strtoull(const char *cp, unsigned int base, unsigned long long *res)
功能:将一个字符串转换unsigend long long型。
返回:转换成功返回0,否则返回负。res指向转换后的unsigned long long数据。

int strict_strtoll(const char *cp, unsigned int base, long long *res)
功能:将一个字符串转换sigend long long型。
返回:转换成功返回0,否则返回负。res指向转换后的signed long long数据。

int sprintf(char *buf, const char *fmt, ...)
功能:格式化输出字符串,类似于printf,只是用字符串buf作为输出对象。
返回:返回写入buf字符串的字符个数。

int snprintf(char *buf, size_t size, const char *fmt, ...)
功能:格式化输出字符串,类似于printf,只是用字符串buf作为输出对象。其中size为buf的大小(包括‘\0’字符)。
返回:返回写入buf字符串的字符个数。

int sscanf(const char *buf, const char *fmt, ...)
功能:格式化输入字符串,类似于scanf,只是用字符串buf作为输入对象。
返回:返回读取buf字符串的字符个数。


lib/kasprintf

  1. char *kasprintf(gfp_t gfp, const char *fmt, ...)  
  1. char *kasprintf(gfp_t gfp, const char *fmt, ...)  


char *kasprintf(gfp_t gfp, const char *fmt, ...)
功能:格式化输出字符串到一段且gfp分配的内存中。
返回:返回指向该内容的字符串指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值