自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

转载 C语言常见错误中英文对照表

常见错误中英文对照表fatal error C1003: error count exceeds number; stopping compilation       中文对照:错误太多,停止编译         分析:修改之前的错误,再次编译fatal error C1004: unexpected end of file found       

2014-10-25 14:37:52 2719

转载 C语言清空输入缓冲区的N种方法对比

C语言中有几个基本输入函数://获取字符系列int fgetc(FILE *stream);int getc(FILE *stream);int getchar(void);//获取行系列char *fgets(char * restrict s, int n, FILE * restrict stream);char *gets(char *s);//可能导致溢出,用fgets代替

2014-10-22 22:01:20 751

转载 C语言:流和缓冲区

流(stream)是一个很抽象的概念,《C程序设计语言》中这样定义:流与磁盘或其它外围设备关联的数据的源或目的地。在Unix/Linux中,文本流和二进制流是相同的,但在Windows中,稍有差异,所以C标准库提供了这两种类型的流。文本流是由文本行组成的序列,每一行包含0个或多个字符,并以'\n'结尾。在某些环境中, 可能需要将文本流转换为其它表示形式(例如把'\n'映射成回车符和

2014-10-22 21:22:56 5261 2

转载 透析C语言可变参数问题(二)

一、是什么我们学习C语言时最经常使用printf()函数,但我们很少了解其原型。其实printf()的参数就是可变参数,想想看,我们可以利用它打印出各种类型的数据。下面我们来看看它的原型:int printf( const char* format, ...);它的第一个参数是format,属于固定参数,后面跟的参数的个数和类型都是可变的(用三个点“…”做参数占位符),实际调用时可以有

2014-10-21 10:09:51 699

转载 透析C语言可变参数问题(一)

首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理。一、printf函数的实现原理在C/C++中,对函数参数的扫描是从后向前的。C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机的内存中,数据有2块,一块是堆,一块是栈(函数参数及局部变量在这里),而栈是从内存的高地址向低地

2014-10-21 10:03:23 546

转载 C语言标准库函数

C语言标准头 断言 字符类测试 (部分)库函数抛出的错误代码 浮点数运算 检测整型数据类型值范围 本土化 数学函数 “非局部跳转” 信号 可变参数列表 一些常数,类型和变量 输入和输出 实用功能 字符串函数 时间和日期函数 断言头文件唯一的目的是提供宏assert的定义。如果断言非真(expression==0),则程序会

2014-10-20 11:07:06 1058

转载 C语言常用头文件总结

C语言常用头文件总结序号 库类别  头文件  1  字符处理 ctype.h  2  地区化 local.h  3  数学函数 math.h  4  信号处理 signal.h  5  输入输出 stdio.h  6  实用工具程序 stdlib.h 7 字符串处理 string.h  

2014-10-20 10:47:50 7290

转载 Redis C语言客户端库hiredis文档翻译

Hiredis是redis数据库一个轻量的C语言客户端库。之所以轻量是由于它只是简单的提供了对redis操作语句支持的接口,并没有实现具体的操作语句的功能。但正是由于这种设计使我们只要熟悉了通用的redis操作语句就可以很容易的使用该库和redis数据库进行交互。除了支持发送命令和接收应答/应答数据,它提供了对应答数据的解析操作。而且这个基于I/O层的数据流解析操作设计考虑到了复用

2014-10-19 15:41:56 857

转载 X86_64上没有写C函数声明导致的BUG(warning: initialization makes pointer from integer without a cast)

我的博客:http://blog.striveforfreedom.netTable of Contents1 简介2 导致崩溃的代码及解决思路2.1 导致崩溃的代码2.2 解决思路3 小结1 简介最近修改一个用C写的开源程序,需要加几个函数,因为偷懒没写函数声明,导致程序崩溃,最后花了很多时间才查明原因,原来是没有写函数声明惹的祸。感觉这个

2014-10-18 20:26:43 20127

转载 gdb命令

gdb命令包含在GNU的gcc开发套件中,是功能强大的程序调试器。GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。 命令 解释 示例 file 加载被调试的可执行程序文件。 因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。 (gdb) file gdb-sample r Run的简写,运行被调试的程序。 如果此前没有下过断

2014-10-18 16:03:29 703

转载 如何写Makefile(二)——规则篇(下)

接前面两篇学习日记:如何写Makefile(二)——规则篇(中)和 学习日记:如何写Makefile(二)——规则篇(上)五、 隐含规则数据库GNU make 3.80拥有90多个内建隐含规则。隐含规则即是模式匹配规则又是后缀规则。这些规则支持的语言有很多: C++, Pascal, FORTRAN, ratfor, Modula, Texinfo, TEX (包括Tangle 和

2014-10-18 13:59:05 787

转载 如何写Makefile(二)——规则篇(中)

三、 查找文件(VPATH)上一篇所使用的例子中,makefile和源文件都是在同一个简单目录下,但真正的程序往往会复杂很多。让我们重新修改整个程序,添加一个叫做counter的函数,同时添加counter.c:[cpp] view plaincopy#include   #include     void counter( in

2014-10-18 13:35:28 739

转载 如何写Makefile(二)——规则篇(上)

一、显式规则(Explicit Rules)通常在写makefile时使用的都是显式规则,这需要指明target和prerequisite文件。一条规则可以包含多个target,这意味着其中每个target的prerequisite都是相同的。当其中的一个target被修改后,整个规则中的其他target文件都会被重新编译或执行。通配符(Wildcards)make支持的通配符与B

2014-10-18 13:00:30 781

转载 如何写Makefile(一)

一、Makefile的基本规则GNU make 规则:target ... : prerequisites ...    command    ....    ....target — 目标文件, 可以是Object File 也可以是可执行文件,还可也是标签Label(标签内容在“伪目标”章节);prerequisites—生成target所需的文件或目标;comman

2014-10-18 12:11:29 1133

转载 C语言运算符优先级 详细列表

恩,问这个问题的人太多了,懒得继续回答,直接贴上来自己看。。。优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号

2014-10-15 16:36:40 948

转载 使用 getopt() 进行命令行处理

轻松处理复杂命令行所有 UNIX® 程序甚至那些具有图形用户界面(graphical user interface,GUI)的程序,都能接受和处理命令行选项。对于某些程序,这是与其他程序或用户进行交互的主要手段。具有可靠的复杂命令行参数处理机制,会使得您的应用程序更好、更有用。不过很多开发人员都将其宝贵的时间花在了编写自己的命令行解析器,却不使用 getopt(),而后者是一个

2014-10-14 22:05:43 443

转载 C语言 getopt()函数

getopt(分析命令行参数)   相关函数表头文件        #include定义函数        int getopt(int argc,char * const argv[ ],const char * optstring);函数说明        getopt()用来分析命令行参数。参数argc和argv是由main()传递的参数个数和

2014-10-14 18:09:57 559

转载 深入理解C系列:不同类型变量的变量名和内存间的关系

有了前面两篇的基础,下面正式开扒变量名和内存的关系,先看一段大家很熟悉的代码:  int i;  scanf_s("%d", &i);  int i;,在这一句就为i分配了内存(但尚未对这块内存进行初始化),所以可以通过&i直接使用这块内存。赋值就更不用说啦,i = 3;。  变量名i,是为方便编程人员使用,是这块内存的别名,指代到块内存,对编程人员i代表这块内存中存

2014-10-14 16:28:57 837

转载 由scanf说起之2:由scanf看 不同类型变量的变量名和内存的关系

在使用scanf时很需要注意一点就是取地址运算符&,这个运算符不留神就很容易忘记,将会产生是一个针对内存的冲突,错误不易查找并且严重,见下面的代码:  int i = 2;  scanf_s("%d", i);  上面的代码不小心失掉了&运算符[s1] ,会发生下面的冲突(之前已为i赋值2,所以是在位置0x00000002处访问冲突。而如果没有赋值,则是在0xcccccccc

2014-10-14 15:44:37 762

转载 由scanf说起之1:scanf函数和回车、空格 及其返回值

scanf和回车的关系:  先看一个我们经常使用的代码:  char c;  scanf("%c", &c);  scanf 的各种格式中,%d、%c、%s三种最常用,通常都是以回车作为一次输入的结束。由于对字符解析方式及字符特点不同(如数字中一般不会出现空格回车等特殊字符)不同,%d格式一般不会在连续输入时,遇到问题。而%s和%c却会出现各种各样的问题,比如回车问题

2014-10-14 15:38:26 820

转载 标准C预处理器(指令)

标准C预处理器该文章借鉴一位老兄的文章,主要是取自PROGRAMMING IN ANSI c(Third Edition).什么是预处理器?答:预处理器在源代码通过编译器之前,先对源代码进行处理。它是在成为预处理器命令行或指令的控制下操作。预处理器指令放在源程序的main函数之前。在源代码通过编译器之前,由预处理器检查所有预处理指令。如果有预处理器指令,则采取相

2014-10-14 12:17:46 570

转载 C语言函数名与函数指针详解

一、通常的函数调用一个通常的函数调用的例子:/* 自行包含头文件 */void MyFun(int x); /* 此处的声明也可写成:void MyFun(int) */int main(int argc, char* argv[]){   MyFun(10); /* 这里是调用MyFun(10) 函数 */   return(0);}void MyFun(in

2014-10-12 20:26:00 429

转载 C语言的编译链接过程详解

C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织,形成最终生成可执行代码的过程。过程图解如下:从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。

2014-10-10 19:46:08 809

转载 linux可执行文件的内容分析工具nm ldd

;nm是用来查看指定程序中的符号表相关内容的工具。下面通过例子,分别来介绍一下这两个工具:1. ldd是用来分析程序运行时需要依赖的动态库的工具, 先看下面的例子, 用ldd查看cs程序所依赖的动态库:

2014-10-10 10:29:28 1848

转载 Linux 关于动态链接库以及静态链接库的一些概念

库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。 ln -s libhello.so.1.0 libhello.so.1 ln

2014-10-10 10:06:52 707

转载 c语言中static和extern的用法详细解析

一,static和extern:大工程下我们会碰到很多源文档。文档a.c复制代码代码如下:static int i; //只在a文档中用int j;    //在工程里用static void init()         //只在a文档中用{}void callme()          //在工程中用{   static int

2014-10-08 22:03:44 770

转载 C语言中局部变量和全局变量的存储类别(static,extern,auto,register)

1.局部变量和全局变量在讨论函数的形参变量时曾经提到,形参变量只在被调用期间才分配内存单元,调用结束立即释放。这一点表明形参变量只有在函数内才是有效的,离开该函数就不能再使用了。这种变量有效性的范围称变量的作用域。不仅对于形参变量,C语言中所有的量都有自己的作用域。变量说明的方式不同,其作用域也不同。C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。1.1局部变量局部变量也

2014-10-08 21:48:03 3360

转载 Linux GCC常用命令

1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。

2014-10-08 16:14:57 550

转载 Source Insight函数调用关系显示设置

当我们需要设置source Insight的项目代码中函数调用关系时,可通过如下的设置来实现:1、显示函数调用关系窗口  Source Insight工具栏中“View”—>“Relation Window”,选中“Relation Window”则在右下角显示一个函数调用关系窗口,如图:上图表示ServiceMain函数调用了其他函数,例如调用了ServiceDelete函数等。

2014-10-07 19:27:59 1117

转载 phpredis中文手册(使用方法)——《redis中文手册》 php版

redis中文手册:http://readthedocs.org/docs/redis/en/latest/ 本文是参考《redis中文手册》,将示例代码用php来实现,注意php-redis与redis_cli的区别(主要是返回值类型和参数用法)。目录(使用CTRL+F快速查找命令):KeyStringHashListSet

2014-10-01 20:51:20 1684

原创 phpredis的安装

1 下载地址https://github.com/nicolasff/phpredis2 安装

2014-10-01 19:19:30 650

转载 php的session机制以及自定义会话管理器

如果需要在数据库中或者以其他方式存储会话数据, 需要使用 session_set_save_handler() 函数来创建一系列用户级存储函数。 PHP 5.4.0 之后,你可以使用 SessionHandlerInterface 类 或者通过继承 SessionHandler 类来扩展内置的管理器, 从而达到自定义会话保存机制的目的。函数 session_set_save_han

2014-10-01 15:38:26 1246

汽车租赁系统

汽车租赁数据库课程设计,C#版,mysql数据库。

2012-07-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除