
C语言
文章平均质量分 56
jeff_2009
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Exit()函数
在C语言的main函数中我们通常使用return (0);这样的方式返回一个值。 但这是限定在非void情况下的,也就是void main()这样的形式。 exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束,跳出操作系统。 exit(0) 表示程序正常退出, exit(1)/exit(-1)表示程序异常退出。 exit() 结束当前进程/当前程序/,原创 2010-05-20 16:45:00 · 511 阅读 · 0 评论 -
FindSubstr()的使用
它返回的是定位到子串的开始位置。char *FindSubstr(char *buf, int b_len, char *pat, int p_len){ char *b_idx; /* index ptr into the data buffer */ char *p_idx; /* index ptr into the pattern buffer */ char *b_end; /* ptr to the end of the data bu原创 2010-12-01 15:16:00 · 1361 阅读 · 0 评论 -
读配置文件的实现
#define SAS3_CONFIGFILE "/mnt/heidun/config/SAS3_Database.conf"GetStrKeyValue(mysqlusername,"LUserName","RemoteMysql",SAS3_CONFIGFILE);//读配置文件BOOL GetStrKeyValue(LPCTSTR strValue,LPCTSTR strKey,LPCTSTR strSection,LPCTSTR strFileName){ FILE *fp; char buf[ST原创 2010-12-09 11:45:00 · 529 阅读 · 0 评论 -
string转换成int类型 和int转string
strlib.h里面有个atoi配置文件里面有 一个IP、端口号 sqlaudit:oracleip any,oracleports 1521,mssqlip any,mssqlports 1433 139 445那么可以,读取出来,然后把这个1521通过atoi转换成整形。原创 2010-12-13 14:55:00 · 2187 阅读 · 0 评论 -
Eclipse遇到的一些问题,和对应的解决办法
<br />1、“binary not found”<br /> 需要build(编译)工程,注意build preference中的“自动生成makefile文件”注释掉(一般都自己写 Makefile文件)。build后就会出现binary等文档。注意eclipse中build、run、debug都需要revise configure<br /> 关于eclipse的build:<br />(1)在eclipse的project菜单下有build automatically。选中这个的话。每原创 2010-12-15 15:07:00 · 3123 阅读 · 0 评论 -
小程序写得都不顺,手有些生了
突然想到一个大小写字母转换的问题,于是动手写了一下。反复调试修改了好几次才写好,真是对自己不满!这种几乎只有在笔试的时候会做到的题,居然。。。笔试的时候可是没有调试工具的!如果没依赖调试工具,估计就过不了了!!代码如下:#include #include #include char *Convert(char *strIn){ //int i=0; char *strOut=(char*)malloc(strlen(strIn)+1);//记得分配空间!记得strlen跟sizeof区别,考虑'/0' me原创 2010-12-16 17:11:00 · 707 阅读 · 0 评论 -
字符编码转换 各种函数 UTF格式转换、
<br />/*<br /> * codeconv.c<br /> *<br /> * Heidun IDS developer team<br /> * Created on: Jun 11, 2009<br /> * Author: Xiaodong Zhong<br /> */<br />#include <stdio.h><br />#include <stdlib.h><br />#include <string.h><br />#include <errno.h><br />#inc原创 2010-12-24 09:22:00 · 1387 阅读 · 0 评论 -
典型的局部变量位置错误
前两天添加写这么一段代码:原创 2010-11-18 11:03:00 · 519 阅读 · 0 评论 -
变量命名规则------匈牙利命名规则
<br />匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。匈牙利命名法的主要思想是:在变量和函数名中加入前缀以增进人们对程序的理解。它是由微软内部的一个匈牙利人发起使用的,结果它在微软内部逐渐流行起来,并且推广给了全世界的Windows开发人员。下面将介绍匈牙利命名法,后面的例子里也会尽量遵守它和上面的代码风格。还是那句话,并不是要求所有的读者都要去遵守,但是希望读者作为一个现代的软件开发人员都去遵守它。<br /> <br /> <br />a Ar原创 2010-11-26 10:06:00 · 885 阅读 · 0 评论 -
TDS协议 加密密码算法
看freetds的源码:unsigned char *tds7_crypt_pass(const unsigned char *clear_pass, int len, unsigned char *crypt_pass){ int i; for (i = 0; i crypt_pass[i] = ((clear_pass[i] > 4)) ^ 0xA5; return crypt_pass;}这一点,wireshark早已经解析出来了。只是,当时不知道用哪种算法实现。原创 2011-05-19 11:10:00 · 3190 阅读 · 1 评论 -
.h文件,
<br />用eclipse环境里,在工程里面添加文件,最后,是做个.c和.h文件,并且把一些结构体、声明等放在.h文件里面。<br />今天本想不加.h文件直接用extern 声明,但是总过不了,不知道怎么回事。后来,只加.h,把函数声明放.h文件里面还是过不了,知道,放进去结构体声明才过。原创 2010-09-16 11:25:00 · 520 阅读 · 0 评论 -
指针与数组的关系
指针与数组是C语言中很重要的两个概念,它们之间有着密切的关系,利用这种关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之间的联系及在编程中的应用。<br /> 1.指针与数组的关系<br /> 当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。如:<br /> char str[20], *ptr;<br /> ptr=str;<br /> ptr被置为数组str的第一个元素的地址,因为数组名就是该数组的首地址,也是数组第一个元素的地址。此时可以认为指针ptr就是数组原创 2010-09-14 12:25:00 · 1841 阅读 · 0 评论 -
c语言 文件操作
void main(){ FILE *fp; fp=fopen("aaa.txt","w"); if (!fp)//判断文件是否打开成功 { printf("open file error!/n"); return ; } fwrite("abcdefg",1,sizeof("abcdefg"),fp);//写入 fclose(fp);//关闭打开文件} #include FILE *f原创 2010-05-25 17:02:00 · 418 阅读 · 0 评论 -
为什么判断结构体相等要这么复杂呢?
疑惑:为什么可以用 = 赋值,却不可以用 == 判断相等? 而且结构体里面可能还有指针,你该如何判断两个指针是否相同,是根据指针所指向的内容来判断还是仅仅根据指针的值来判断。也是需要程序员自己来定义的。原创 2010-05-26 09:38:00 · 2353 阅读 · 1 评论 -
fopen怎么使用相对路径
第一行为 UNIX 系统使用;第二行是 Windows 系列系统的用法;第三、四行则为 URL 的使用范例。$fp = fopen("/home/rasmus/file.txt", "r");$fp = fopen("c://mydata//info.txt", "r");$fp = fopen("http://www.php.net/", "r");$fp = fopen("ftp://user原创 2010-05-28 11:27:00 · 11152 阅读 · 1 评论 -
字节对齐 结构体的sizeof
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但原创 2010-06-01 15:29:00 · 598 阅读 · 0 评论 -
switch 里面不同分支的不同初始化
写了段程序如下:原来是,没加这对大括号的,报错。后面差资料得:把变量声明放到一对{}中是可以的,因为那样变量的作用域就那对大括号中,但直接放在switch的大括号内,却置于某个case之后是不可以的,因为那样意味这有某个变量,其作用域直接在swtich的大括号内,它的作用域本身并没有被跳过(swtich语句并没有被跳过),但它在其作用域内却未必被定义,这显然是荒唐的。原创 2010-06-02 11:30:00 · 974 阅读 · 0 评论 -
【转】c语言动态与静态分配内存空间的区别
所谓动态内存分配就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。<br />例如我们定义一个float型数组:float score[100];<br />但是,在使用数组的时候,总有一个问题困扰着我们:数组应该有多大?在很多的情况下,你并不能确定要使用多大的数组,比如上例,你可能并不知道我们要定义的这个数组到底有多大,那么你就要把数组定义得足够大。这样,你的原创 2010-08-11 09:41:00 · 936 阅读 · 0 评论 -
free的使用
想用释放一段内存 char *buf(10000个字节)能简单的free(buf)吗?显然不能!!! 这个一开始我犯这样的错了。内存中可能有很多的空字符('/0').free会释放传入参数的类型大小,sizeof,当然如果是字符串,会计算字符串的长度,以'/0'结束。那么如何释放呢?for(i=0;i{ free(buf[i]);}如果不是用buf[i],而是用buf呢??会不会有问题呢?该内存中间有空字符存在时,会free一段一段的,那么后面的计算会……原创 2010-09-13 14:52:00 · 870 阅读 · 0 评论 -
malloc()和free()
<br />一、malloc()和free()的基本概念以及基本用法:<br />1、函数原型及说明:<br />void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。<br />关于分配失败的原因,应该有多种,比如说空间不足就是一种。<br />void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自原创 2010-09-13 16:45:00 · 621 阅读 · 0 评论 -
内存泄漏和内存溢出
一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。 内存溢出:比如数组越界、指针移动越界原创 2010-09-13 14:54:00 · 403 阅读 · 0 评论 -
尽量用strncpy
<br />在做字符串拷贝的时候,尤其在不明确源字符串长度的情况,最好使用strncpy来做,以确保不溢出。<br />如遇到的例子: <br /> uint8_t *strPlace = buf + sizeof(mysql_hdr) + 9 + 23;<br />//strcpy(mssql->loginInfo.UserName, strPlace);<br /> strncpy(mssql->loginInfo.UserName, strPlace,255);原创 2011-04-14 16:37:00 · 797 阅读 · 0 评论