C语言
文章平均质量分 76
景语
景语
展开
-
C语言非常用关键字解析
对于我等菜鸟来说,看到void,int,double,char还算有亲切感,但是经常一遇到那些不常用的C语言关键字就有点晕头转向。本篇文章就对那些非常用关键字(主要是变量声明)进行一个总结。1、auto :声明自动变量auto声明的变量的后果其实就是不加auto时一样,不加的时候默认为隐式声明而已。int a;auto int a;//与第一个声明无差别a原创 2012-04-19 21:32:55 · 1103 阅读 · 0 评论 -
步步LINUX C--进程间通信(一)管道
linux间进程通信的方法在前一篇文章中已有详细介绍。http://blog.csdn.net/jmy5945hh/article/details/7350564本篇详细介绍及代码测试第一种方式,即管道(Pipe)及有名管道(named pipe)。1-1 管道简介也称匿名管道,其在系统中没有实名,是进程的一种资源,因此不可以在文件系统中以任何形式查看。生存周期从被原创 2012-05-02 16:51:44 · 2941 阅读 · 0 评论 -
步步LINUX C--基于流的I/O操作
前一篇步步linux C系列文章介绍了文件I/O操作这篇文章进一步介绍linux系统中的另一种输入输出方法。相对来说,流式I/O由于其简单以及方便性,应用范围更为广泛。概念与操作流程:流,类似于无保存不可见的文件。其中包含有特定结构体,结构体里面是管理该流的所有信息,如关联文件描述符,缓存长度,缓存中字符数,出错标志等。一个例子是stdin->_flags表示缓存区的类型。原创 2012-04-24 12:36:27 · 1399 阅读 · 0 评论 -
谈Socket传输结构体
网上有很多关于Socket结构体传输的文章。正好前两天在纠结,于是翻开了几篇看。照着方法去做,结果发现不管用可能是我太笨了吧。仔细研究发现又一次输给了细节。由于在定义结构体时我们有两种定义方式A:struct mystruct aB:struct mystruct *b这两种方式的定义在传输中代码是有细微差别的。我具体用我的一个例子说明吧。#include //库中原创 2012-03-08 09:44:00 · 2591 阅读 · 3 评论 -
步步LINUX C--进程间通信(二)信号
linux间进程通信的方法在前一篇文章中已有详细介绍。http://blog.csdn.net/jmy5945hh/article/details/7350564本篇详细介绍及代码测试第二种方式,即信号(Signal)。1 信号简介信号全称为软中断信号,主要用于进程控制。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知。信号机制经过POSIX实时扩展后,原创 2012-05-15 21:05:51 · 2754 阅读 · 0 评论 -
弃用gets(),改用fgets()就能解决问题了?!
首先自问自答,错!fgets()里面同样有陷阱!其实http://www.cplusplus.com/reference/clibrary/cstdio/gets/说得很清楚了Notice that gets does not behave exactly as fgets does with stdin as argument: First, the ending new原创 2012-06-07 15:32:32 · 4029 阅读 · 0 评论 -
for(;;)与while(1)循环的比较
写程序无聊了,就会想点DT的问题今天突然在想for(;;)与while(1)循环的效率问题。直接写个程序来跑估计是比不出高下的。直接上链接编译后的汇编看吧。关于GCC汇编连接的方法,详见:http://blog.csdn.net/jmy5945hh/article/details/7435234源文件a.cvoid main(){ while(1原创 2012-05-22 22:29:07 · 1416 阅读 · 0 评论 -
想成为嵌入式程序员应知道的0x10个基本问题
想成为嵌入式程序员应知道的0x10个基本问题 经典文章,转载于此。为方便阅读,博主已经重新调色和编辑。 C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来讲,你能了解许多关转载 2012-06-20 19:56:13 · 1014 阅读 · 0 评论 -
位字段的那些事儿
虽然在一般的PC编程中主要使用基本类型。但是如果涉及到嵌入式开发编程,位字段能够更好地节省存储空间,并且设置方便。关于位字段的一些特点与注意事项本文使用以下代码作为实例:#include typedef struct{ int show:1, color:3, volume:4, type:8, size:24;} BitStruct_1;typede原创 2012-06-26 15:34:35 · 2444 阅读 · 0 评论 -
深度理解Unix/linux系列中Select()模型[中英对照]
翻译文章,为了自己更好地理解。英文原文贴在http://www.doserver.net/post/linux-unix-select-model.php ,吉林大学胡章优博士的个人主页。THE WORLD OF SELECT()So just why am I so hyped on select()?One traditional way to write networ翻译 2012-02-19 20:37:38 · 2747 阅读 · 0 评论 -
最简单的Linux命令行Socket聊天程序源代码
只有今天贴出代码,明天看才知道自己有多么傻。单线程,一对一聊天,混搭风格编程,函数乱入不解释……/* * Chat on Linux Terminal--alpha * Worte by Jimmy's team@uestc * 2011-2-23 * * This is the sorce code of client * Some BUGS still原创 2012-02-23 14:13:47 · 6705 阅读 · 3 评论 -
Socket对传输文件结尾的判定
再调用socket API进行传输时会涉及到很多细节的问题,其中一条便是文件传输的结尾判定。这里的文件指广泛的文件而不单字符文件,因此无法使用EOF或者‘\0’来判定文件什么时候结束。如果不进行恰当的判定,接收方将重复接收最后一个buf里面的内容。直至填满整个文件!很多人提到了传输文件之前先发送文件长度。这样通过对比该长度与接收到的长度来判定是否继续写入文件。这是一个比较麻烦,但是原创 2012-03-12 22:38:28 · 3997 阅读 · 0 评论 -
Socket编程中常用C函数总结
本文总结Linux下Socket编程常用C函数,但是不包括套接字API(如:connect,socket等),持续更新。。。1/函数名:gets功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。用法:char*gets(char*原创 2012-02-28 20:19:15 · 1762 阅读 · 0 评论 -
步步LINUX C--文件I/O操作
熟悉linux系统的同学都知道,所有的设备在linux下都被当作文件来处理,因此了解文件的I/O操作是十分重要的。1/具体来说,有以下几种文件类型(控制台ls -l命令的第一列即为文件类型):符号类型符号类型s套接字文件d目录文件l链接文件b块设备文件c字符设备文件p管道文件原创 2012-04-16 19:35:03 · 3465 阅读 · 1 评论 -
GNU C 、ANSI C、标准C、标准c++的区别和联系
GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。它在编写linux的时候自己制作了一个标准成为 GNU C标准。ANSI 美国国家标准协会,它对C做的标准ANSI C标准后来被国际标准协会接收成为 标准C 所以 ANSI C 和标准C是一个概念。总体来说现在linux也支持标准C,以后标准C可以跨平台,而GUN转载 2012-03-01 10:11:53 · 1617 阅读 · 1 评论 -
C语言时间处理函数strftime
很方便实用的函数,mark一下~functionstrftimesize_t strftime ( char * ptr, size_t maxsize, const char * format, const struct tm * timeptr );Format time to stringCopies into ptr the co转载 2012-03-30 18:45:17 · 3297 阅读 · 0 评论 -
LINUX进程间通信(IPC)学习手记
linux间进程通信的方法在前一篇文章中已有详细介绍。http://blog.csdn.net/jmy5945hh/article/details/7350564本篇对六种IPC方法进行简单的代码测试。由于博主最近在研究父子进程间通信,因此实例代码都基于此。如果要应用于无亲缘关系进程间通信,稍加修改即可。篇幅有限,本文没有列出函数定义。相信你知道去哪里查询他们。1/管道(Pipe)原创 2012-03-22 22:15:03 · 3253 阅读 · 0 评论 -
被吞掉的scanf与神奇的printf
被吞掉的scanf在编程时使用scanf函数读取char值的时候很容易陷入十分“诡异”的情况偶尔你会发现scanf函数根本没有起作用,好像在运行时这段代码莫名其妙被吞掉了!测试代码:#include int main(int argc, char *argv[]) { char a, b; scanf("%c", &a); scanf("%c", &b); pri原创 2012-03-21 22:54:36 · 1628 阅读 · 0 评论 -
inet_ntoa()返回整型参数,开玩笑?!
今天写socket程序,想在连接时打印出IP地址,于是查询得知可以使用inet_ntoa()函数函数相关说明如下: 函数声明:char *inet_ntoa (struct in_addr); 返回点分十进制的字符串在静态内存中的指针。于是在我的代码中加入:printf("%s join in!\n", inet_ntoa(clientSockadd原创 2012-02-21 17:46:59 · 2686 阅读 · 4 评论 -
拆解GCC命令的预处理-编译-汇编-链接4个阶段
在linux下使用gcc命令编译程序时,整个过程实际上在底层处理分为四个步骤--预处理/编译/汇编/连接下面通过gcc的不同命令参数来拆解这四个步骤。源代码:hello.c#include #define PP printfint main(int argc, char **argv) { int a = 5; PP("a = %d\n", a); retur原创 2012-04-07 15:40:59 · 3471 阅读 · 3 评论