C语言常用库函数。
%#x 所以c语言中的%#x意思是带格式0x的16进制输出。
memset 初始化函数,将某一刻内存中的全部设置为指定的值。
void* memset(void s, int c, size_t n);
s: 指向要填充的内存块。
c: 要被设置的值
n: 要被设置该值的字符数
返回类型是一个指向存储区s的指针。
memset(buf, 0, uLen + 1);
// 拷贝n个字节到dest
void memcpy(void* dest, void* src, int n)
//检测不可信的数据,数据可能没'\0'结尾,为避免一直扫描,设置扫描边界。
int len = strnlen(str, bufLen-1);
int len = strlen(str); // char* 字符串长度获取
// 复制字符串的库函数
char *strcpy(char *dst, const char *src);
// 将源字符串的一部分复制到目标字符串中。
char *strncpy(char *dest, const char *src, size_t n)
// 比较字符串1,2 前n个字符
if (0 == strncmp("//", sLine, 2)) // 注释的一行。
int strncmp(char *str1, char *str2, int n)
// 字符串分割函数(取分个字符前面的内容),str为NULL表示从上次分割的位置,继续分割。
char *strtok(char *str, const char *split);
// 格式化输出, 输出结果到str中。
int sprintf(char str, const charformat, ...);
// 格式化指定长度size到str中,超出截取前面size-1,然后加上'\0'.
int snprintf(char str, int size, char format, ...);
// 两个字符串连接
char *strcat(char dest, const char src)
// 发送格式化内容 filename 中
sprintf(filename,"/sys/class/gpio/gpio%d/value", bank*8+gio_num);
fprintf(filename, "[Error]%s(%d): ioctl ret =%d\n", FUNCTION, LINE, ret);
INFO("Compiled at %s %s", DATE, TIME);
// 从fp文件指针,读取指定字节数据到buf。每次读取字节数*读取次数。
fread(buf, sizeof(char), sizeof(buf) - 1, fp);
// 格式化打印输出
printf("%d %d \n", buf[0],buf[1]);
// 查找字符串s中首次出现 c字符的位置。返回的是c首次出现位置的指针。
char strchr(const chars, char c);
// 字符c在字符串中最后一次出现的位置,没找到返回NULL。
char strrchr(const chars, char c)
fwrite 将数据从内存中写入到文件中,
write(buf, size, count, fp);
write(fd, buf, 2);
int fineno(FILE *stream); // 获取文件流使用的文件描述词
fsync函数:仅对文件描述符指定的单一文件起作用,且等待磁盘操作结束,在返回。
perror(char * str); // 输出错误原因。
fseek(File* fb, long offset, int fromWhere); // 文件指针定位到指定的位置
snprintf
sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf.
函数说明:
最多从源串中拷贝size-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为size的话,将不会溢出。
函数返回值:
若成功则返回欲写入的字符串长度,若出错则返回负值。
在snprintf(dest, size, "str: %s\n", src)中如果size-1大于等于"str: %s\n"的长度,
则把"str: %s\n"都拷贝到dst; 如果size-1小于"str: %s\n"的长度,
则从"str: %s\n"拷贝size-1长度的字符串到dst,并且末尾置\0.
就是说,拷贝的长度是size-1和源字符串长度的最小值;
char test[8];int ret= snprintf(test,5,"1234567890"); printf("%d|%s\n",ret,test);
运行结果为:
10|1234