
C
文章平均质量分 90
ljx0305
这个作者很懒,什么都没留下…
展开
-
按位与、或、异或等运算方法
按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。 另,负数按补码形式参加按位与运算。“与运算转载 2014-04-24 10:29:21 · 3476 阅读 · 0 评论 -
语言编程需要注意的64位和32机器的区别
语言编程需要注意的64位和32机器的区别转载 2011-02-22 15:11:00 · 1343 阅读 · 1 评论 -
堆栈解析算术表达式(总结)
堆栈解析算术表达式(总结)转载 2011-03-16 13:50:00 · 1299 阅读 · 0 评论 -
函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)
函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)转载 2011-03-18 10:20:00 · 824 阅读 · 0 评论 -
#define用法归类
#define用法归类转载 2011-04-22 16:23:00 · 781 阅读 · 0 评论 -
关于字节对齐的总结
关于字节对齐的总结转载 2011-05-04 14:45:00 · 947 阅读 · 0 评论 -
获取SISC和IDE硬盘序列号 Linux完整源码
获取SISC硬盘的序列号linux完整源码#include #include #include #include #include #include #include #define SCSI_TIMEOUT 5000 static char转载 2011-09-20 09:24:29 · 2351 阅读 · 0 评论 -
判断两个(float)变量x,z是否相等 以及和0值比较方法
浮点数的表示是不精确的,不能直接比较两个数是否完全相等,一般都是在允许的某个范围内认为像个浮点数相等,如有两个浮点数a,b,允许的误差范围为1e-6,则abs(a-b)<=1e-6,即可认为a和b相等。还有一种方法就是扩大再取整,比如a=5.23,b=5.23,直接比较a==b一般为false,但是a和b都扩大一百倍,然后强制转换为int类型,再用==比较就可以了float型变量和“零值”转载 2012-01-18 09:41:27 · 6706 阅读 · 0 评论 -
自助Linux之问题诊断工具strace
引言“Oops,系统挂死了..."“Oops,程序崩溃了..."“Oops,命令执行报错..." 对于维护人员来说,这样的悲剧每天都在上演。理想情况下,系统或应用程序的错误日志提供了足够全面的信息,通过查看相关日志,维护人员就能很快地定位出问题发生的原因。但现实情况,许多错误日志打印模凌两可,更多地描述了出错时的现象(比如"could not open file","conne转载 2012-09-28 16:05:26 · 900 阅读 · 0 评论 -
C++中extern “C”含义深层探索
C++中extern “C”含义深层探索转载 2011-01-25 14:44:00 · 575 阅读 · 0 评论 -
stdcall, cdecl, fastcall, thiscall 调用规则
stdcall, cdecl, fastcall, thiscall 调用规则转载 2010-09-02 16:21:00 · 805 阅读 · 0 评论 -
GDB用法详解
GDB用法详解GDB是一个强大的命令行调试工具。虽然X Window提供了GDB的图形版DDD,但是我仍然更钟爱在命令行模式下使用GDB。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。 于是UNIX下的转载 2010-04-15 10:06:00 · 1118 阅读 · 0 评论 -
n阶等和幻方
输入一个奇数n,构造并输出一个n阶等和幻方, 即每一行每一列和两对角线上的n个数的和相等 如当n=5时,有(构造方法请自行搜索或者观察下表): 03 16 09 22 15 20 08 21 14 02 07 25 13 01 19 24 12 05 18 06 11 04 17 10 23 记得这种幻方的构造方法小时候听同学说过,嘿嘿(貌似是小学的时候.......),方法很简单的转载 2010-04-05 22:19:00 · 1074 阅读 · 0 评论 -
C中#号的用法(宏转换字符串)
最近发现在C中有很多的东西值得我们学习。C中的#号不仅是#include,#define等的关键字首使用而已,#在宏中还有很多用法。具体请看下面我来举例1.双#号的宏用法。我相信双##号的用法应该大部分人都见过吧,主要是用来连接宏变量名使用,在GCC参考手册中这样记载。可用于宏内部将两个源代码权标连接成一个的连接指示字,可用来构造不会被解析器错误解释的名字。例如,下面两个宏会实现连转载 2010-04-07 17:19:00 · 1482 阅读 · 1 评论 -
C/C++中宏使用总结
C/C++中宏使用总结 .C/C++中宏总结C程序的源代码中可包括各种编译指令,这些指令称为预处理命令。虽然它们实际上不是C语言的一部分,但却扩展了C程 序设计的环境。本节将介绍如何应用预处理程序和注释简化<a onclick="function onclick(){function onclick(){tagshow(event, %B3%CC%D0%F2%BF%AA%转载 2010-04-07 17:22:00 · 818 阅读 · 0 评论 -
c中宏定义的特殊符号
在C/C++中,宏定义是由define完成的,define中有三个特殊的符号值得我们注意:1. #:在宏展开的时候会将#后面的参数替换成字符串,如: #define p(exp) printf(#exp); 调用p(asdfsadf)的时候会将#exp换成"asdfsadf"2. ##:将前后两个的单词拼接在一起。例如《The C Programming Language原创 2010-04-07 17:37:00 · 3672 阅读 · 0 评论 -
字节序问题--大端法小端法
字节序问题--大端法小端法 一、字节序定义字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。其实大部分人在实际的开发中都很少会直接和字节序打交道。唯有在跨平台以及网络程序中字节序才是一个应该被考虑的问题。在所有的介绍转载 2010-04-27 11:32:00 · 803 阅读 · 0 评论 -
共享Windows下C++库之内存池篇
共享Windows下C++库之内存池篇转载 2010-08-23 16:49:00 · 1174 阅读 · 0 评论 -
resolv.conf文件配置相关的案例
引言操作系统中/etc/resolv.conf配置文件中的内容一般为空,如果该文件配置不正确,将导致ssh、route、netstat命令响应慢的问题。在/etc/resolv.conf添加错误地内容,导致涉及域名解析相关的命令响应慢,是维护工作中较常遇到的问题。 相关案例现象:使用其他机器ssh连接一机器,响应很慢,需要10多秒时间才有输入密码的提示响应。 问题解决:转载 2012-09-28 16:17:00 · 1889 阅读 · 0 评论 -
如何使用strace+pstack利器分析程序性能
如何使用strace+pstack利器分析程序性能引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了。将strace和pstack工具结合起来使用,就可以达到以上目的。strace跟踪程转载 2012-09-28 16:05:52 · 1255 阅读 · 0 评论 -
关于GBK和UTF-8之间的转换
关于GBK和UTF-8之间的转换,很多初学者会很迷茫。一般来说GBK和UTF-8是文字的编码方式,其对应的内码是不一样的,所以GBK和UTF-8的转换需要对内码进行一一映射,然后进行转换。对于一般系统上的工程,一般使用libiconv即可,但是对于嵌入式或手机操作系统,libiconv显得就有点庞大了。在这里提供GBK和UTF8转换以及全半角、大小写转换等函数,希望对手机开发的转载 2013-05-09 14:21:30 · 3775 阅读 · 0 评论 -
C/C++常用时间函数介绍
在介绍之前,先介绍两个概念 Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。 Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时转载 2013-05-09 10:49:25 · 3640 阅读 · 0 评论 -
linux下C程序获取绝对路径各种方法分析
昨天肚腩群里有人问LINUX下C如何获取程序绝对路径。初看这问题,肚腩觉得很简单啊,就用getcwd或者argv[0]就可以了。写了个程序试试,#include int main(int argc,char *argv[]){ char buffer[100]; getcwd(buffer, sizeof(buffer)); printf("The c转载 2013-06-22 21:10:52 · 29110 阅读 · 4 评论 -
详解大端模式和小端模式
详解大端模式和小端模式一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令转载 2013-06-28 14:36:38 · 3138 阅读 · 0 评论 -
CGI 文件下载
文件名:download.c 用交叉编译工具编译生成download#include#include#include#include#include#define MAX_FILE_LEN (1024*30)#define DOWNLOAD_FILE_PATH"/works/config/"#define DOWNLOAD_FILE_NAME"转载 2013-07-17 17:38:49 · 9330 阅读 · 0 评论 -
Linux 的多线程编程的高效开发经验
背景Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经验,用以避免这些的陷阱。我们希望这些经验可以帮助读者们能更好更快的熟悉 Linux 平台的多线程编程。我们假转载 2013-07-03 15:18:07 · 3778 阅读 · 1 评论 -
Char转为int时高位符号扩展的问题
代码示例: static get_utili(constchar*p){int util;…while(isspace((int)*p))//跳过空格++p;util=(int)*p++;…}现象&后果: 当传入的参数p指向的内容为0x9A、0XAB等内容(最高位为1)时,得到的int型变量util的值将会出错,因为char会进行符号转载 2013-07-31 11:11:28 · 4070 阅读 · 0 评论 -
不用临时变量交换两个变量的值
大家对于异或(XOR)的如下性质应该很熟悉:(X XOR Y) XOR Y = X(X XOR Y) XOR X = Y 我们可以利用异或(XOR)的这个性质来实现不用临时变量交换两个变量的值。具体代码很简单:void Swap(int& x, int& y){ x = x ^ y; y = x ^ y; x = x ^ y转载 2014-04-24 10:34:07 · 3568 阅读 · 0 评论 -
extern用法详解
1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 答案转载 2013-04-16 14:07:49 · 3027 阅读 · 0 评论 -
忽略大小写的比较、查找
忽略大小写的比较、查找: strcasecmp与strcasestr 在C语言中(string.h)定义了用于进行忽略大小写的字符串比较的函数strcasecmp及strncasecmp,以及用于子串查找的函数strstr,不过很遗憾的是,C及C++中并未定义strstr的“忽略大小写版本”。 以下是strstr的一种实现形式(注意,当s2是一个空串时转载 2013-01-10 14:23:26 · 5907 阅读 · 1 评论 -
一个fork的面试题
前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?1234567891011121314#include #include转载 2012-10-04 11:58:14 · 840 阅读 · 0 评论 -
查看gcc预定义宏(predefined macro)的方法 .
GNU C Compilergcc -dM -E - /dev/nullcpp -dM HP-UX ansi C compilercc -v fred.c (where fred.c is a simple test file)SCO OpenServer C compilercc -## fred.c (where fred.c is a simple test file)Sun St转载 2012-10-31 15:19:27 · 1016 阅读 · 0 评论 -
Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量对所有用户有效在/etc/profile增加以下内容。只对当前用户有效在Home目录下的.bashrc或.bash_profile里增加下面的内容:(注意:等号前面不要加空格,否则可能出现 command not found)#在PATH中找到可执行文件程序的路径。export PATH =$PATH转载 2012-11-07 16:50:24 · 825 阅读 · 0 评论 -
linux C 正则表达式
最近有这么个需求,c搞搞正则,毕竟Regular Expression so强大^_^标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。编译正则表达式为了提高效率,在将一个字符串与正则转载 2012-11-08 11:49:41 · 1281 阅读 · 0 评论 -
守护进程的编写
1、概念:是运行在后台,并确一直在运行的特殊进程,独立于控制终端并确周期性的执行某种任务或等待处理某些发生的事件。2、特点:(1)运行在后台。 (2)必须与其运行前的环境(为关闭的文件描述符、控制终端、会话、进程组、工作目录、文件创建掩码等)隔离开来。 (3)启动时从启动脚本/etc/rc.d或作业规划进程crond或用户终端(shell)启动执行。3、转载 2012-11-08 12:21:39 · 797 阅读 · 0 评论 -
不同平台字节序影响位字段封包
How Endianness Effects Bitfield PackingHints for porting drivers.Big endian machines pack bitfields from most significant byte to least.Little endian machines pack bitfields from least significa转载 2013-01-07 09:24:53 · 877 阅读 · 0 评论 -
用 C 语言编写 Windows 服务程序的五个步骤
Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。当初我写第一个 NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇 Nigel Th转载 2012-12-31 10:06:40 · 747 阅读 · 0 评论 -
用 VC++建立 Windows 服务程序
本文主要介绍了 OpenSCManager、CreateService、OpenService、ControlService、DeleteService、RegisterServiceCtrlHandler、SetServiceStatus、StartServiceCtrlDispatcher等操作服务程序的主要几个API的用法,具体的函数参数大家可以查阅MSDN。为什么要使用服务应该程序转载 2013-01-08 11:36:09 · 627 阅读 · 0 评论 -
用匿名联合来节省空间
调用上更方便 不用定义联合变量就可以直接使用C++支持匿名联合,即:定义一个没有确定类型的无名类。这种特殊的联合只能包含非static数据成员;也不能定义构造函数、析构函数、或者其它什么成员函数。当在一个命名空间中声明匿名联合时(例如:在全局空间中),它就被声明为static类型。下面是匿名联合的形式:CODEunion //没有名字{//…member};//没有实例匿名联合转载 2010-01-13 23:12:00 · 1051 阅读 · 0 评论 -
sscanf函数的使用
sscanf 名称: sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( const char *, const char *, ...); int scanf( const char *, ...); 头文件: #include 说明: sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前转载 2010-01-04 13:24:00 · 870 阅读 · 0 评论