随笔分类 -  C语言

摘要:#include <time.h> srand(time(NULL) ); //生成种子,做一次否则随机数是递增和递减的 int b; b = rand()%20;//0-20的随机数,这里可以进入循环,产生真正随机数 阅读全文
posted @ 2017-06-16 21:53 朱小勇 阅读(217) 评论(0) 推荐(0)
摘要:可以用open和fopen来打开文件,open偏底层,fopen来自于open更顶层。(根据公司某个项目看了源码用的open) #include <stdio.h>#include <windows.h>int main(void){ FILE *fp; char temp; char buf[10 阅读全文
posted @ 2017-06-15 11:27 朱小勇 阅读(1365) 评论(0) 推荐(0)
摘要:sizeof是返回这个类型所占字节数。 sizeof(char*)是返回一个指针,这个指针指向的是char,归根结底还是返回指针大小。(只要是指针,不管指向char还是int还是其他,长度都一样) 阅读全文
posted @ 2017-06-09 10:46 朱小勇 阅读(228) 评论(0) 推荐(0)
摘要:在用了多种上位机开发环境,包括mfc、Qt、C#之后,发现它们的API都是对底层协议的(可以说是C语言)的封装,所以了解了底层协议,任意换上位机开发环境都是没问题的。 1、服务器创建套接字socket,bind至指定地址和端口,listen,循环accpet等待客户端接入,阻塞等待 2、客户端创建套 阅读全文
posted @ 2017-05-24 10:22 朱小勇 阅读(1304) 评论(0) 推荐(0)
摘要:1、memset void *memset(void *s,int ch,size_t n); memset:将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s 阅读全文
posted @ 2017-04-27 10:09 朱小勇 阅读(365) 评论(0) 推荐(0)
摘要:如果:char test = 0xFF; 此时:test != 0xFF;//因为test为char类型,0xFF为int,所以编译器会将test转为int(-1),所以不等于 如果:uchar test = 0xFF; 此时:test == 0xFF;//同样因为test为uchar类型,0xFF 阅读全文
posted @ 2017-04-26 17:33 朱小勇 阅读(697) 评论(0) 推荐(0)
摘要:void TheFunc(void){ static int icount=0; icount++; if(icount>10){ cout<<"我已被调用超过10次了"<<endl; return; } if(icount>20){ cout<<"我已被调用超过20次了"<<endl; retur 阅读全文
posted @ 2017-04-25 09:19 朱小勇 阅读(1697) 评论(0) 推荐(0)
摘要:条件编译是通过预编译指令来实现的,主要方法有:1、#if, #elif, #else, #endif#if 条件 1 代码段 1#elif 条件 2 代码段 2...#elif 条件 n 代码段 n#else 代码段 n+1#endif即可以设置不同的条件,在编译时编译不同的代码 2、#ifdef, 阅读全文
posted @ 2017-04-24 11:24 朱小勇 阅读(1525) 评论(0) 推荐(0)
摘要:time_t实际上就是长整型long int;用来保存从1970年1月1日0时0分0秒到现在时刻的秒数!用time()这个函数获取! 阅读全文
posted @ 2017-04-24 10:58 朱小勇 阅读(395) 评论(0) 推荐(0)
摘要:1、sin_addr.s_addr = INADDR_ANY;设置成本地IP 2、pthread_create();线程生成函数 3、在linux下,sleep(1)是睡眠1s 阅读全文
posted @ 2017-04-22 22:17 朱小勇 阅读(198) 评论(0) 推荐(0)
摘要:功能:把格式化的数据写入某个字符串缓冲区。 原型 int sprintf( char *buffer, const char *format, [ argument] … ); sprintf参数列表 buffer:char型指针,指向将要写入的字符串的缓冲区。 format:格式化字符串。 [ar 阅读全文
posted @ 2017-04-22 13:28 朱小勇 阅读(223) 评论(0) 推荐(0)
摘要:举例: typedef struct _ssidCfg_{ unsigned char ret; unsigned char scanSsid; unsigned char priority; unsigned char encryption; unsigned char ssid[32]; uns 阅读全文
posted @ 2017-04-22 13:24 朱小勇 阅读(1510) 评论(0) 推荐(0)
摘要:小端模式:多字节时低字节在前 eg:char* p = {0x1E,0x00}代表为0x001E(十进制的30) ->int tem16 = 0; tmp16 = ((unsigned short)(p[1] << 8)) | (unsigned char)p[0]; -->tem16 == 30 阅读全文
posted @ 2017-04-22 13:09 朱小勇 阅读(546) 评论(0) 推荐(0)
摘要:无符号整数,其实就是1 2 5 阅读全文
posted @ 2017-04-15 12:56 朱小勇 阅读(133) 评论(0) 推荐(0)
摘要:define后面只有一个名字,那么这个宏是空的,不会对代码产生影响。 用来便于阅读的 阅读全文
posted @ 2017-04-15 11:50 朱小勇 阅读(1467) 评论(0) 推荐(0)
摘要:#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char a[30]; char b[25]="abcdefgagh"; memcpy(a,b,c);//把b地址开始复制c个字节到a地址 return 阅读全文
posted @ 2017-02-15 15:12 朱小勇 阅读(1114) 评论(0) 推荐(0)
摘要:unsigned short DialogSerial::crc_ccitt(unsigned char *q,int len){ unsigned short ccitt_table[256] = {//CRC表 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x 阅读全文
posted @ 2017-02-14 09:39 朱小勇 阅读(317) 评论(0) 推荐(0)
摘要:%a,%A 读入一个浮点值(仅C99有效) %c 读入一个字符 %d 读入十进制整数 %i 读入十进制,八进制,十六进制整数 %o 读入八进制整数 %x,%X 读入十六进制整数 %s 读入一个字符串,遇空格、制表符或换行符结束。 %f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数 阅读全文
posted @ 2016-12-14 00:16 朱小勇 阅读(892) 评论(0) 推荐(0)
摘要:1、文件必须以二进制形式打开 FILE* pfileone=fopen("fileone","rb"); FILE* pfiletwo=fopen("filetwo","wb"); 2、读取文件,并存放数据 char *buf; int len=ftell(pfileone); buf=new ch 阅读全文
posted @ 2016-10-08 16:05 朱小勇 阅读(1400) 评论(0) 推荐(0)
摘要:char a[10] = "123"; /*正确,在定义的时候初始化*/char a[10];a = "123"; /*错误,不能用“=”直接为字符数组赋值*/strcpy(a, "123"); /*正确,使用strcpy函数复制字符串*/ 阅读全文
posted @ 2016-09-28 22:06 朱小勇 阅读(2835) 评论(0) 推荐(0)