木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java3年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql4年进入店铺

随笔分类 -  c语言

摘要:可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算。其原型为:time_t time(time_t * t);如果你已经声明了参数t,你可以从参数t返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970年1月1日0时0分0秒)到现在此时的秒数。如果参数为空(NULL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时间:#include int main(void) { time_t t; t=time(NULL); pri... 阅读全文
posted @ 2013-07-24 17:29 C语言程序 阅读(1018) 评论(0) 推荐(0)
摘要:一、回车与换行的来历关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。 这就是“换行”和“回车”的来历,从它们... 阅读全文
posted @ 2013-07-24 14:40 C语言程序 阅读(8767) 评论(0) 推荐(0)
摘要:一、inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))为什么要取代这种形式呢,且听我道来: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作,因此,效率很高,这是它在C中被使用的一个主要原因。 2. 这种宏定义在形式上类似于一个函数,但在使用它时,仅仅只是做预处理器... 阅读全文
posted @ 2013-07-23 17:22 C语言程序 阅读(10538) 评论(1) 推荐(3)
摘要:类UNIX下C/C++开发,代码调试比较麻烦,最原始的加跟踪调试很土,也很费时,特别是一个庞大的项目,代码行数非常大的时候调试起来非常费劲,当core dump时定位也不容易,这里介绍几个常用工具: gdb、dbx调试工具,valgrind内存检查工具(Linux) 。gdb(GNU DeBugger)是GNU的调试器,一般和gcc配搭使用。要使用GDB进行调试,编译程序时要指定-g或-ggdb的编译选项。如: gcc –g main.cgdb指令:f(file):指定可执行文件,l(list)列出源文件,r(run)运行可执行文件,可带执行参数,b(break)设置断点,c(continue 阅读全文
posted @ 2013-07-19 10:45 C语言程序 阅读(541) 评论(0) 推荐(0)
摘要:do while 语句在使用宏定义时是一个有用的技巧,说明如下:假设有这样一个宏定义#define macro(condition) /if(condition) dosomething()现在在程序中这样使用这个宏:if(temp) macro(i);else doanotherthing();一切看起来很正常,但是仔细想想。这个宏会展开成:if(temp) if(condition) dosomething();else doanotherthing();这时的else不是与第一个if语句匹配,而是错误的与第二个if语句进行了匹配,编译通过了,但是运行的结果一定是错误的。为了避免这... 阅读全文
posted @ 2013-07-11 13:06 C语言程序 阅读(661) 评论(0) 推荐(0)
摘要:转自http://blog.csdn.net/liming0931/article/details/7752248单片机的特殊功能寄存器SFR,是SRAM地址已经确定的SRAM单元,在C语言环境下对其访问归纳起来有两种方法。1、采用标准C的强制类型转换和指针来实现采用标准C的强制转换和指针的概念来实现访问MCU的寄存器,例如:#define DDRB (*(volatile unsigned char *)0x25)分析如下: A:(unsigned char *)0x25中的0x25只是个值,前面加(unsigned char *)表示0x25是个地址,而且这个地址所存储的数据的数据类型是u 阅读全文
posted @ 2013-07-08 17:26 C语言程序 阅读(1252) 评论(0) 推荐(0)
摘要:问题:C语言中有struct自定义结构体类型;C++中也有struct类型,而且,与C++中面向对象主要的数据类型class还极为相似。那么,C++中struct和class之间有什么区别,什么情况下使用struct呢?解决办法:从C++语言设计者Bjarne Stroustrup的大作《C++编程语言(特别版)》中归纳C++中struct和class的区别,有以下几点:1. 成员的默认访问权限。struct的成员默认是public的;class的成员默认是private的;2. 默认继承权限。在没有明确指定的情况下,struct的默认继承方式是public,class的默认继承方式是priv 阅读全文
posted @ 2013-07-06 16:00 C语言程序 阅读(608) 评论(0) 推荐(0)
摘要:32位与64位的数据类型长度是不一样的,而且windows和linux也有些许区别,下面把64位下的数据长度列表如下(无符号unsigned和有符号的长度一样): linux64 windows64 linux32 windows32char 8 8 8 8short 16 16 16 16int 32 32 32 32long 6432 32 32long long 64 64 64 64size_t 64 64 32 32需要注意的是long类型在win64下是32位,千万别搞错了。size_t类型随着CPU位数变化,也要注意。总结:没事不要用long。size_t是系统类型,使用时心里. 阅读全文
posted @ 2013-07-04 10:36 C语言程序 阅读(686) 评论(0) 推荐(0)
摘要:在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。其一般形式为:表达式1,表达式2其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。【例】main() { int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); printf("y=%d,x=%d",y,x); }本例中,y等于整个逗号表达式的值,也就是表达式2的值,x是第一个表达式的值。对于逗号表达式还要说明两点:逗号表达式一般形式中的表达式1和表达式2 也可以又是逗号表达式。例如:表达式1,(表达式2,表达式3) 阅读全文
posted @ 2013-07-03 16:24 C语言程序 阅读(1889) 评论(0) 推荐(0)
摘要:C/C++中判断某一文件或目录是否存在1.C++很简单的一种办法:#include#includeusingnamespacestd;#defineFILENAME"stat.dat"intmain(){fstream_file;_file.open(FILENAME,ios::in);if(!_file){cout #include #include voidmain(void) { /*Checkforexistence*/ if((_access("ACCESS.C",0))!=-1) { printf("FileACCESS.Cexis 阅读全文
posted @ 2013-06-27 16:12 C语言程序 阅读(1927) 评论(0) 推荐(0)
摘要:问题:win7环境下,使用MaplabX IDE 1.70,某一天象平常一样打算用ICD 3将代码加载到开发板中进行调试,意外碰到如下错误:Launching Could not acquire hardware tool communications resources: ICD3PlatformTool SN#JIT110837830 The debugger could not be started. Terminating debug session. User program finished其中,JIT110837830是ICD 3的型号。前提,已经使用ICD 3在同样的目标板上加 阅读全文
posted @ 2013-06-04 14:48 C语言程序 阅读(842) 评论(0) 推荐(0)
摘要:英文原文: http://www.gratisoft.us/todd/papers/strlcpy.html英文作者:Todd C. Miller,Theo de Raadt译者:林海枫译本地址:http://blog.csdn.net/linyt/archive/2009/07/27/4383328.aspx注:本译文版权由译者所拥有,欢迎转载,但请注明译者和原文,请匆用于任何商业用途。Strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数Todd C. MillerUniversityof Colorado, BoulderTheo de RaadtOpenBSDprojec 阅读全文
posted @ 2013-03-30 15:45 C语言程序 阅读(691) 评论(0) 推荐(0)
摘要:问题:函数memcpy(dest, src, sizeof(dest))、strncpy(dest, src, sizeof(dest))和snprintf(dest, sizeof(dest), "%s", src)都可以将src字符串中的内容拷贝到dest字符串中。哪一种方式效率最高呢?就是说,哪种方式性能最好呢?解决办法:1. 建立三个文件test_memcpy.c,test_strncpy.c和test_snprintf.c:文件test_memcpy.c:david@u1110-hp:~/wrk/tmp/cstring$ cat test_memcpy.c #in 阅读全文
posted @ 2013-03-29 23:18 C语言程序 阅读(750) 评论(0) 推荐(0)
摘要:问题:使用snprintf()完成字符串的复制操作:#include #include #include #define ARR_SIZE(a) (sizeof((a))/sizeof((a)[0])) #define LEN_BUF 5 int main() { char buf[] = "0123456789"; char buf1[LEN_BUF]; char buf2[LEN_BUF]; // char *buf2 = NULL; // Source buf greater than dest buf1 causes stack overflow // s... 阅读全文
posted @ 2013-03-29 13:59 C语言程序 阅读(1751) 评论(0) 推荐(0)
摘要:问题:从网上拷贝了一段代码,粘贴到自己写的程序strcat_compare.c中,然后编译gcc -o strcat_compare strcat_compare.c;出现错误如下:avid@ubuntu:~/wrk/tmp$ gcc -o strcat_compare strcat_compare.c strcat_compare.c: In function ‘main’: strcat_compare.c:28:1: error: stray ‘\343’ in program strcat_compare.c:28:1: error: stray ‘\200’ in program . 阅读全文
posted @ 2013-03-28 16:07 C语言程序 阅读(1834) 评论(0) 推荐(0)
摘要:(一) 写一个简单的可变参数的C函数 下面我们来探讨,如何写一个简单的可变参数的C函数。写可变参数的C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); va在这里是variable-argument(可变参数)的意思。这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件。下面我们写一个简单的可变参数的函数,该函数至少有一个整数参数,第二个参数也是整数,是可选的。函 阅读全文
posted @ 2013-03-16 22:56 C语言程序 阅读(226) 评论(0) 推荐(0)
摘要:1、 data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。2、 data区内最好放局部变量。因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;3、 确保你的程序中没有未调用的函数。在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。这一点Keil C做得很愚蠢,但也没办法。4、 程序中遇到的逻辑标志变量可以定义到bdata中,可以大大降低内存占用 阅读全文
posted @ 2012-12-12 12:53 C语言程序 阅读(1393) 评论(0) 推荐(0)
摘要:已知strcpy函数的原型是char* strcpy(char* strDest,const char* strSrc);1.不调用库函数,实现strcpy函数2.解释为什么要返回char*;1.strcpy的实现代码char* strcpy(char* strDest,const char* strSrc){if((strDest == NULL) || (strSrc == NULL)) //[1] throw "Invalid Arguments"; //[2]char* strDestCopy = strDest; //[3]while((*strDest++ = 阅读全文
posted @ 2012-12-04 10:14 C语言程序 阅读(463) 评论(0) 推荐(0)
摘要:问题:从c++文件中将std:string转换为char*后,返回包含IP地址的char*,需要将该字符串char*中的IP地址提取出来;解决办法:1. 解决思路:IP地址最长为12字符+3句点=15字符,一般性表示为192.168.111.111;可以从第一个字符开始解析,当不是'.'时,将所有字符保存下来,然后把所有保存下来的字符转换为16进制就可以了;2. 程序如下:typedef struct { char addr_ipv4[4]; } IPADDR_IPV4; #include // Function: To extract HEX value of IP addr 阅读全文
posted @ 2012-09-14 19:32 C语言程序 阅读(944) 评论(0) 推荐(0)
摘要:问题:break在for循环、while循环等循环流程控制中起的作用是停止执行break后面的语句,跳出本次循环,并跳出该循环控制体;在switch条件选择中,没有了循环控制,break又起什么作用呢?解决办法:1. switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇到break语句就退出switch语句,程序流程转向开关语句的下一个语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句,然 阅读全文
posted @ 2012-09-12 05:44 C语言程序 阅读(4571) 评论(0) 推荐(0)

木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java3年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql4年进入店铺