
C
伯爵不蝶耳1226
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
魔改Mongoose源文件,支持一次上传文件大于3M
修改read_conn文件static long read_conn(struct mg_connection *c) { long n = -1; // if (c->recv.len >= MG_MAX_RECV_BUF_SIZE) { // mg_error(c, "max_recv_buf_size reached"); // } else if (c->recv.size - c->recv.len < MG_IO_SIZE &原创 2021-12-07 16:34:18 · 1157 阅读 · 0 评论 -
魔改Mongoose源文件,以支持Python requests模块请求上传文件失败的问题
项目场景: 基于Mongoose搭建的Http服务器,利用Python requests模块请求上传文件问题描述: 利用Python requests模块请求上传文件失败upload.py:from urllib3 import encode_multipart_formdataimport requestsdef sendFile(filename, file_path): """ :param filename:文件...原创 2021-12-07 14:33:56 · 610 阅读 · 0 评论 -
读C陷阱与缺陷笔记
1.字符与字符串(1)用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。eg:对于采用ASCII字符集的编译器而言,'a'的含义与0141(八进制)或者97(十进制)严格一致。(2)用双引号引起的字符串,代表的是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制值为零的字符‘\0’初始化。eg:printf("He...原创 2019-07-01 10:05:26 · 185 阅读 · 0 评论 -
string/char[]/char* 是不是以'\0'结尾
1. const char* 字符串 以 “\0”结尾。2. char[] 字符串 以 “\0”结尾。3.string 字符串 不以 “\0”结尾。4. char[n] = "string", 当string 长度+“\0”>n时,会因空间不足出错。5.string.c_str() 转 const char* 时, 会在字符串末尾 自动补“\0”6.char原创 2018-01-17 17:46:59 · 3693 阅读 · 0 评论 -
void* 转 int
int a = 5;int b;void* p = &a;b = *(int*)p;原创 2017-12-28 17:47:52 · 2930 阅读 · 0 评论 -
写一个简单的makefile
一个简单的Makefile教程Makefiles是组织代码编译的一种简单方法。本教程甚至没有描述使用make的可能性,而是作为初学者指南,以便您可以快速轻松地为中小型项目创建自己的makefile。一个简单的例子让我们从以下三个文件开始:hellomake.c,hellofunc.c和hellomake.h,它们分别代表一个典型的主程序,一些单独的文件中的某些功翻译 2017-12-26 14:48:18 · 616 阅读 · 0 评论 -
Socket网络编程
Socket编程套接字概念Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作一致。区别是管道主要应用于本地进程间通信,而套接字多应用于网络进程间数据的传转载 2017-12-15 17:14:46 · 436 阅读 · 0 评论 -
#if、#ifdef、#if defined之间的区别
#if的使用说明#if的后面接的是表达式#if (MAX==10)||(MAX==20) code...#endif它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去,不是执行!!)#if defined的使用#if后面接的是一个宏。#if defined (x) ...code.转载 2017-11-28 09:45:07 · 491 阅读 · 0 评论 -
透彻分析C/C++中memset函数
在C语言中,经常需要对内存进行操作,里面涉及很多函数,但是memset函数的使用有一点需要大家格外注意,这也是我在做项目时遇到过的一个问题,调试了很久才找出来错误。函数原型是:void *memset(void *s, int ch, size_t n); 函数功能是:将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第转载 2017-12-06 17:47:10 · 344 阅读 · 1 评论 -
C语言文件操作
一、C文件概述1、“文件(file)”:所谓“文件”是指一组相关数据的有序集合。数据以文件的形式存放在外部介质(一般是磁盘、磁带、光盘等)上,在操作系统中是以文件为单位对数据进行管理的。以文件名作为访问文件的标识。2、C语言把文件看作一个字节序列,即由一连串的字节组成。根据文件中的数据组织形式,数据文件可分为ASCII码文件和二进制文件。ASCII码文件,又称为“文本文件”(t原创 2017-12-06 16:28:17 · 579 阅读 · 0 评论 -
单链表中头指针与头结点的关系
头指针与头结点不同,头结点即第一个结点,头指针是指向第一个结点的指针。链表中可以没有头结点,但不能没有头指针。以下是头指针与头结点的关系:typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList; //定义结点的结构体定义LinkList L;则L为链表的头指针。 L=(L转载 2017-12-01 11:09:27 · 3370 阅读 · 0 评论 -
Printf函数和cout函数参数执行顺序以及自增与自减
Printf函数和cout函数参数执行顺序以及自增与自减 总结:在VC++ 6.0下:C代码: 1、printf函数的执行顺序是由右到左的 2、前自增运算符(++i)先加1,再使用i,此时i已经加了1; 3、后自增运算符(i++)先使用i,再加1,VC++6.0后自增运算是要在整条语句结束以后才自加1的C++代码:1、原创 2017-12-01 11:07:51 · 1116 阅读 · 1 评论 -
extern "c"用法解析
引言C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器转载 2017-12-01 10:22:14 · 326 阅读 · 0 评论 -
const,宏和内敛的使用
目录一。宏定义函数和函数的区别二。宏定义和内敛函数inline1.const.2.enum.3.inline.一.宏定义函数和函数的区别在c语言中,用宏定义函数和函数的区别1.宏定义函数没有参数检验比如: #define Max(a, b) a>b? a : b传参数的时转载 2017-11-30 10:09:08 · 254 阅读 · 0 评论 -
利用typedef定义函数指针(回调函数)
利用typedef定义函数指针进入正文: 代码简化, 促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字。 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。用法一:typedef int (*MYFUN)(int, int); 这种用法一般用转载 2017-11-29 11:05:04 · 2817 阅读 · 1 评论 -
math.h中的常用函数
abs(计算整型数的绝对值)相关函数: abs, fabs表头文件: #include定义函数: int abs (int j)函数说明: abs()用来计算参数j的绝对值,然后将结果返回。返回值: 返回参数j的绝对值结果。范例:#ingclude main(){int ansert;answer = abs(-12);printf("|-12| =原创 2017-06-21 11:20:00 · 1276 阅读 · 0 评论