![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
文章平均质量分 56
wfs1874
代码的世界应该是快乐的。
展开
-
c语言fread()函数
描述Ç库函数 为size_t的fread(无效* PTR,为size_t大小,为size_t nmemb个,FILE *流) 从给定流 流 读取数据到 的ptr 所指向的数组中。声明下面是fread()函数的声明。size_t fread (void * ptr ,size_t size ,size_t nmemb ,FILE * stream ) 参数ptr - 这是指向带有最...转载 2018-05-22 15:51:17 · 18288 阅读 · 1 评论 -
mmap()函数参数详解
author : wfstime : 2019.4.17功能描述mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。 munmap执行相反的操作,删除特定地址区域的对象映射。基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。在对映射区写入之...转载 2019-04-17 15:20:41 · 6434 阅读 · 0 评论 -
linux libc--stat函数详解
stat函数头文件: #include <sys/stat.h>定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中可以获取文件大小等信息返回值: 执行成功则返回0, 失败返回-1,错误代码存于errno错误代码:ENOEN...原创 2019-04-11 20:58:41 · 530 阅读 · 0 评论 -
Libc层打印log的陷阱
前面已经讲过了如何在Libc层打印log信息::在Libc库打印log信息最近在Android libc 库中添加代码,同时打印log遇到了很大的坑:1. 问题描述:在Libc库中的write, close函数中,添加代码调用函数时,在函数中使用了打印了log信息,使真个APP崩溃。 const char * tag = "Debug001"; const char...原创 2019-04-11 20:21:42 · 518 阅读 · 2 评论 -
数据大小端64位字节相互转换
在linux内核中有htonll()这个函数来进行网络大小端字节转换的功能,但是在Libc中没提供此函数,所以必须自己利用已用的函数进行封装。大小端与数据存放顺序C语言中,大于一个字节的数据类型在内存中表示时,不同CPU有不同的存放顺序,分为大端序和小端序。大端序即高字节存放在低地址,小端序相反。例: int x = 0x12345678, &x == 0x100,其大小端表示如下...原创 2019-04-08 10:04:52 · 7694 阅读 · 0 评论 -
C语言lseek()函数和 fseek()函数 rewind函数
lseek():移动文件读写位置头文件:#include <sys/types.h> #include <unistd.h>定义函数:off_t lseek(int fildes, off_t offset, int whence);函数说明:每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如O...原创 2019-04-07 09:52:18 · 919 阅读 · 0 评论 -
对__BEGIN_DECLS 和 __END_DECLS理解
最近在Libc库的修改,发现了头文件里面有大量的:__BEGIN_DECLS......__END_DECLS其实它的真实含义是:#if defined(__cplusplus) #define __BEGIN_DECLS extern "C" { #define __END_DECLS } #else #define __BE...转载 2019-03-19 15:43:30 · 152 阅读 · 0 评论 -
Android Native层 libc 打印log信息-----bionic库打印log
前提Android 系统把标准输出stdout重定向到/dev/null中,所以logcat无法查看printf()打印的log信息。实际操作头文件 #include “private/libc_logging.h”需要的函数名:__libc_format_log(ANDROID_LOG_DEBUG, tag, format, msg);实例:# include&l...原创 2019-02-28 09:48:48 · 920 阅读 · 0 评论 -
C语言类型转换----有符号数截断问题
程序员面试宝典中有这个一道题:下面程序的结果是多少?#include <stdio.h>#include <stdlib.h>int main(){ unsigned int a = 0xFFFFFFF7; //unsigned int a = 0xAAAAAA07; unsigned char i = (unsigned char)a...原创 2019-02-18 11:05:01 · 1601 阅读 · 0 评论 -
C语言:lseek函数-----改变文件偏移量
1.文件偏移通常调用read或write每读写一个文件,就会改变文件的读写位置。在linux中同样可以使用lseek函数来修改文件偏移量,即读写位置。标准C库的fseek函数和系统函数lseek比较类似,fseek函数也可以移动当前读写位置(或者叫偏移量),其实fseek就是对lseek系统函数封装后实现的,快速回忆一下之前学习的fseek函数的作用及常用参数。lseek函数函数原型...原创 2018-12-17 21:24:22 · 7554 阅读 · 0 评论 -
平衡二叉树的C语言实现(创建、插入、查找、删除、旋转)
平衡二叉树(AVL)或者是一颗空树,或者是具有下列性质的非空二叉搜索树:(1). 任一结点的左、右子树均为AVL树;(2). 任一结点的左、右子树高度差的绝对值不超过1。对于二叉树中任一结点T,其“平衡因子”(Balance Factor, BF)定义为BF(T) = Hl-Hr,其中Hl和Hr分别为T的左、右子树的高度。有了平衡因子的定义,AVL树“任一结点左右子树高度差的绝...转载 2018-12-09 21:03:34 · 1931 阅读 · 0 评论 -
NULL和nullptr的区别
NULL是0nullptr是空指针void看例子:#include <iostream>void go(int num){ std::cout << "go num" << std::endl;}void go(char *p){ std::cout << "go p" << std::en原创 2018-11-16 22:32:45 · 259 阅读 · 0 评论 -
C语言开关宏定义的学习##__VA_ARGS__
最近写c程序,学到一种开关宏,极大提高程序的控制性:#define __DEBUG#ifdef __DEBUG#define tnfs_print(format, ...) printf (format, ##__VA_ARGS__)#else#define tnfs_print(format, ...)#endif 如果 定义了 __DEBUG (作为开关) 则调...原创 2018-10-18 21:59:50 · 1573 阅读 · 4 评论 -
#、##、__VA_ARGS__和##__VA_ARGS__的作用
一、 # 用来把参数转换成字符串例子一:#define P(A) printf("%s:%d\n",#A,A);int main(int argc, char **argv){ int a = 1, b = 2; P(a); P(b); P(a+b); system("pause");}输出为:...转载 2018-10-18 21:53:19 · 335 阅读 · 0 评论 -
C/C++之宏、内联函数和普通函数的区别
转载:https://www.cnblogs.com/ht-927/p/4726570.htmlC/C++之宏、内联函数和普通函数的区别内联函数的执行过程与带参数宏定义很相似,但参数的处理不同。带参数的宏定义并不对参数进行运算,而是直接替换;内联函数首先是函数,这就意味着函数的很多性质都适用于内联函数,即内联函数先把参数表达式进行运算求值,然后把表达式的值传递给形式参数。 内联函...转载 2018-09-11 11:01:34 · 138 阅读 · 0 评论 -
关于int8_t int64_t size_t ssize_t的相关问题
转载于: https://blog.csdn.net/sole_cc/article/details/51626845uint8_t之类那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为类型/ typedef的的缩写,表示它是通过的typedef定义的,而不是其它数据类型。既然它们都不是新的数据类型,只是使用的typedef给类型起的别...转载 2018-05-23 12:03:23 · 357 阅读 · 0 评论 -
C语言指针转换为 intptr_t 类型
intptr_t类型数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小。为了保证平台的通用性,程序中尽量不要使用long类型。可以使用固定大小的数据类型宏定义,这些宏定义需要引用stdint.h头文件。/* There is some amount of overlap with <sys/types.h> as kno...转载 2019-07-22 10:51:34 · 428 阅读 · 0 评论