最近在研究Android 5.1的recovery升级,发现里面的很多系统函数都不是很熟悉,现在做一下笔记,方便自己及有需要的朋友。
1、库函数 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。下面的函数跟strcmp类似,返回值情况类似。C 库函数 int strncmp(const char *str1, const char *str2, size_t n) 把 str1 和 str2 进行比较,最多比较前 n 个字节。头文件为#include <string.h>
该函数返回值如下:
如果返回值小于 0,则表示 str1 小于 str2。
如果返回值大于 0,则表示 str1 大于 str2。
如果返回值等于 0,则表示 str1 等于 str2。
实例:
2、float strtof(const char *nptr, char **endptr);
扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回,
返回值:返回转换后的浮点型数
3、void setbuf(FILE *steam, char *buf);
setbuf函数具有打开和关闭缓冲机制。为了带缓冲进行I/O,参数buf必须指向一个长度为BUFSIZ(定义在stdio.h头文件中)的缓冲区。通常在此之后该流就是全缓冲的,但是如果该流与一个终端设备相关,那么某些系统也可以将其设置为行缓冲。为了关闭缓冲,可以将buf参数设置为NULL。
4、库函数strtok( char *str1, const char *str2 )
5、char *strdup(const char *s);
原文解释:The strdup() function returns a pointer to a new string which is a duplicate of the strings. Memory for the new string is obtained with malloc(3), and can be freed with free(3).
Strdup()函数是c语言中常用的一种字符串拷贝库函数,一般和free()函数成对出现。
strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。该函数的返回值是返回一个指针,指向为复制字符串分配的空间;如果分配空间失败,则返回NULL值。
6、int fputs(const char *str, FILE *stream)
把字符串写入到指定的流 stream 中,但不包括空字符。
参数:
str -- 这是一个数组,包含了要写入的以空字符终止的字符序列。
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符串的流。
返回值:
该函数返回一个非负值,如果发生错误则返回 EOF。
7、int _vsnprintf(char* str,size_t size,const char* format,va_list ap);
属于可变参数。用于向字符串中打印数据、数据格式用户自定义。头文件是#include <stdarg.h>
参数说明:
1、char *str[out],把生成的格式化字符串存放在这里。
2、size_t size[in],str可以接受的最大字符串数[1] (非字节数,UNICODE一个字符两个字节),防止产生数组越界。
3、const char *format [in],指定输出格式的字符串,它决定了你需要提供的可变参数类型、个数和顺序。
4、va_list ap[in],va_list变量。va:variable_argument:可变参数。
函数功能:将可变参数格式化输出到一个字符数组。
用法类似于vsprint,不过加了size的限制,防止了内存的溢出(size为str所指的字符串空间的大小)。
返回值:执行成功,返回最终生成的字符串的长度,若生成的字符串的长度对于size,则将字符串的前size个字符复制到str,同时将原来的字符串长度返回(不包括终止符);若执行失败,返回负值,并置errno。