![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言学习总结
HULIHONG
性格开朗,喜欢学习、游戏。
展开
-
C MD5加密源码
来源于: http://www.fzitshow.com/redirect.php?tid=11971&goto=lastpost#include #include #include // 函数原型;// void MD5_Init(MD5_CTX *c);// void MD5_Update(MD5_CTX *c, const void *data, unsigned转载 2009-11-04 14:24:00 · 1948 阅读 · 0 评论 -
获取系统时间函数
time_t t;struct tm *timeinfo; time(&t);timeinfo = localtime(&t);timeinfo->tm_year + 1900;timeinfo->tm_mon + 1; struct tm { int tm_sec; /* 秒 – 取值区间为[0,59] */原创 2011-06-13 16:36:00 · 900 阅读 · 0 评论 -
结构体变量的赋值方法
源码如下#include #include #include struct A{int (*read)(int a, int b);int (*write)(int a, int b);int (*ioctl)(int a, int b);};int sn7325_read(int a, int b){printf("%d %d\n",原创 2011-12-06 10:41:20 · 2301 阅读 · 0 评论 -
CRC16循环冗余校验算法
源码1:#include #include #include unsigned short crc16(unsigned char *buf,int len){unsigned short crc = 0xffff;int i_byte = 0,i_bit = 0;for (i_byte = 0; i_byte {crc = crc ^ buf[i_by转载 2012-03-13 10:05:38 · 4178 阅读 · 1 评论 -
C语言位域!
结构体中常见的冒号的用法是表示位域。 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。转载 2012-03-13 11:09:30 · 511 阅读 · 0 评论 -
C语言函数
1 warning: implicit declaration of function ‘functionName’ -------调用该函数时候未做外部声明或者未包含该函数所在的头文件2 undefined reference to 'functionName' .............该函数没有定义部分原创 2012-04-10 07:57:40 · 488 阅读 · 0 评论 -
c va系列宏的基本用法
va系列宏的用法的一般步骤: vsptr(char *format, ...) //切记此处的格式 { va_list argptr; va_start(argptr, format); //使得argptr指向以format开头的存储空间 va_arg(argptr, type); //返回argptr指向的参数列表的当前参数,并使得argptr指向参数转载 2009-11-19 16:24:00 · 759 阅读 · 0 评论 -
C语言IP有效性检查
int fun(int n){ if (n >= 0 && n { return 0x0; } else { return 0x1; }}int ip_check(char *argv){ int i; int ip[4] = {-1, -1, -1, -1}; char *str = NULL; printf原创 2014-07-01 18:12:18 · 2411 阅读 · 0 评论 -
栈的内部实现过程
先写个小程序:void fun(void){ printf("hello world");}void main(void){ fun() printf("函数调用结束");}这是一个再简单不过的函数调用的例子了。当程序进行函数调用的时候,我们经常说的是先将函数压栈,当函数调用结束后,再出栈。这一切的工作都是系统帮我们自动完成的。但在完成的过程中,系统会用到下面三种寄存器:1.EIP2.ESP3.EBP当调用fun函数开始时,三者的作用。1.EIP寄存器里存储的是CPU下次要执行的指令的地址。 也就是转载 2011-05-21 18:39:00 · 1222 阅读 · 0 评论 -
系统栈和用户栈
系统栈(也叫核心栈、内核栈)是内存中属于操作系统空间的一块区域,其主要用途为: (1)保存中断现场,对于嵌套中断,被中断程序的现场信息依次压入系统栈,中断返回时逆序弹出; (2)保存操作系统子程序间相互调用的参数、返回值、返回点以及子程序(函数)的局部变量。 用户栈是用户进程空间中的一块区域,用于保存用户进程的子程序间相互调用的参数、返回值、返回点以及子程序(函数)的局部变量。 那么为什么不直接用一个栈,何必浪费那么多转载 2011-05-21 18:11:00 · 9047 阅读 · 1 评论 -
strtok及strtok_r的应用!
函数定义及头文件:char *strtok(char *s, const char *delim) 头文件:。该函数的作用是分割字符串,参数s执行欲分割的字符串,参数delim则为分割标志 strtok函数的实例: int main(int argc, char **argv){ char str[] = "hello world"; char *p转载 2009-12-18 10:11:00 · 4098 阅读 · 0 评论 -
strdup函数的用法!
原型:extern char *strdup(char *s); 用法:#include 功能:复制字符串s 说明:返回指向被复制的字符串的指针,所需空间由malloc()分配且可以由free()释放。 举例: // strdup.c #include #inc转载 2010-02-26 17:40:00 · 2045 阅读 · 0 评论 -
C语言代码的整个编译过程
1 源文件hello.c(文本)--à预处理器----àhello.i(文本) 预处理器:将#include 包含的文件内容插入该命令处,检查全文处理#define宏定义,处理条件编译命令 #if #endif 将不需要的code屏蔽掉,处理完毕后生成修改后的源代码hello.i. 2 hello.i(文本)----à编译器------àhello.s(汇编程序 文本) 编译器:词转载 2009-12-28 13:51:00 · 819 阅读 · 0 评论 -
C到汇编的详细讲解
汇编揭秘C语言中的参数传递问题[zz]文章作者:cook702很多学习汇编的朋友想必对C也比较了解,因为在当前大学的课程体系里,它很有可能就是你接触到的第一门编程语言。由于对计算机的理解不够,学习时必定会遇到各种问题。有些问题是你通过思考就可以解决的,而更多的问题则是你无从思考,就好像它天生就是这样,你只要记住就OK了。然而这样的学习方式是机械的,更是没有创造力的。只有真正理解了C转载 2009-12-28 17:29:00 · 1102 阅读 · 0 评论 -
linux c 编译时出现warning: assignment makes pointer from integer without a cast原因
个人目前已总结2种原因: 1: 未包含函数的头文件2: 函数在被调用之前未作声明原创 2010-03-17 09:17:00 · 11184 阅读 · 0 评论 -
ubunt 编写C程序时 出现libmysqlclient.so.15: cannot open shared object file: No such file or directory
本人遇到的情况:报错的东西,Makefile中已经包含并连接进去了。而且libmysqlclient.so.15在连接的目录下已经存在了 解决办法:一:Solved this with help.a quickln -s /usr/lib/mysql/libmysqlclient.so.15.0.0 usr/lib/libmysqlclient.so.15solved this原创 2010-04-23 17:53:00 · 1090 阅读 · 0 评论 -
求公共字符串的经典源码
<br />源代码如下:<br /> <br />#include <stdio.h><br />#include <stdlib.h><br />#include <string.h><br /><br />char *maxsubstr(char shortstring[], char longstring[])<br />{<br /> int i;<br /> int j;<br /> char *substr = malloc(256);<br /> lon原创 2010-07-07 14:04:00 · 483 阅读 · 0 评论 -
Linux c xml编程小结
<br />如果出现以下错误:<br /><br />reader1.c:(.text+0x10): undefined reference to `xmlTextReaderConstName'<br />reader1.c:(.text+0x2b): undefined reference to `xmlTextReaderConstValue'<br />reader1.c:(.text+0x39): undefined reference to `xmlTextReaderHasValu原创 2010-06-04 17:37:00 · 1489 阅读 · 1 评论 -
C的循环队列
#include "iostream"#include "stdlib.h"#include "stdio.h"#include "malloc.h"#define MAXQSIZE 5#define OK 1using namespace std;int i;char e; typedef struct {int *base;int front;int rear;}SqQueue;SqQueue q; initqueue(SqQueue &q){q.base=(int *)malloc(MAXQSIZE*原创 2011-05-19 20:06:00 · 850 阅读 · 0 评论 -
free的原型
void free(void *ptr) { struct mem_control_block *free; free = ptr - sizeof(struct mem_control_block); free->is_available = 1; return;}原创 2014-06-19 09:13:43 · 965 阅读 · 0 评论