char函数

Nginx学习笔记 ---高级数据结构

寵の児 提交于 2020-01-26 03:15:31
动态数组 ngx_array_t 表示一块连续的内存,其中存放着数组元素,概念上和原始数组很接近 // 定义在 core/ngx_array.h typedef struct { void * elts ; // 数组的内存位置,即数组首地址 ngx_uint_t nelts ; // 数组当前的元素数量 size_t size ; // 数组元素的大小 ngx_uint_t nalloc ; // 数组可容纳的最多元素容量 ngx_pool_t * pool ; // 数组可使用的内存池 } ngx_array_t ; elts 就是原始的数组,定义成 void*,使用时应强转成相应的类型 nelts 相当于 vector.size(); size 相当于 sizeof(T); nalloc 相当于 vector.capacity(); pool 数组使用的内存池,相当于 vector 的 allocator 数组里的元素不断增加,当 nelts > nalloc 时将引起数组扩容,ngx_array_t 会向内存池 pool 申请一块两倍原大小的空间————这个策略和 std::vector 是一样的 但 ngx_array_t 扩容成本太高,它需要重新分配内存并且将数据拷贝,所以最好一次性分配足够的空间,避免动态扩容 操作函数: 使用 ngx_array_t.elts

web性能压力测试工具:Webbench 源码分析

最后都变了- 提交于 2020-01-26 03:10:55
前言 Webbench是一个网站压力测试的工具。由Lionbridge公司开发,Webbech的标准测试可以向我们展示服务器的两项内容,分别为每秒钟请求数和每秒钟传输数据量。如果你不清数访问的网站能承受多大的压力,或者对比两个网站的性能可以,考虑使用Webbench或者http_load来测试。 源码下载 webbench源码一共包含两个源文件:socket.c和webbench.c 下载地址: http : / / home . tiscali . cz / ~ cz210552 / webbench . html 工作原理 1. 主函数进行参数命令行检查,并且进入bench开始压测。 2. bench函数使用fork模拟出多个客户端,调用socket并发请求,每个子进程记录自己的访问数据,并写入管道。 3. 父进程从管道读取子进程的输出信息。 4. 使用函数alarm进行时间控制,到时候后会发生SIGALRM信号,调用信号处理函数子进程停止。 Webbench原理图 源码分析 socket.c /* $Id: socket.c 1.1 1995/01/01 07:11:14 cthuang Exp $ * * This module has been modified by Radim Kolar for OS/2 emx */ /***********************

第七周学习总结

不想你离开。 提交于 2020-01-26 02:35:35
本周作业头 这个作业属于哪个课程 c语言程序设计 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2888 我在这个课程的目标是 指针 这个作业在哪个具体方面帮助我实现目标 加强了对指针的了解 参考文献 http://c.harson.co/ 基础作业 6-2 每个单词的最后一个字母改成大写 (10 分) 函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。 函数接口定义: void fun( char *p ); 其中 p 是用户传入的参数。函数将 p所指字符串中每个单词的最后一个字母改成大写。 裁判测试程序样例: #include <stdio.h> void fun( char *p ); int main() { char chrstr[64]; int d ; gets(chrstr); d=strlen(chrstr) ; chrstr[d] = ' ' ; chrstr[d+1] = 0 ; fun(chrstr); printf("\nAfter changing: %s\n", chrstr); return 0; } /* 请在这里填写答案 */ 输入样例: my friend

memset函数用法

折月煮酒 提交于 2020-01-26 01:53:29
1. memset()函数原型是extern void *memset(void *buffer, int c, int count)   buffer:为指针或是数组   c:是赋给buffer的值 count:是buffer的长度 这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, sizeof(buffer)), Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’; 例:char a[100];memset(a, '/0', sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。 如: struct sample_struct {   char csName[16];   int iSeq;   int iType; }; 对于变量:struct sample_struct stTest; 一般情况下,清空stTest的方法: stTest.csName[0]='/0'; stTest.iSeq=0; stTest.iType=0; 用memset就非常方便: memset(&stTest,0,sizeof(struct sample_struct)); 如果是数组: struct sample_struct TEST[10]; 则 memset(TEST,0

UNICODE与ANSI的区别

那年仲夏 提交于 2020-01-26 00:32:27
什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。目前,在网络、Windows系统和很多大型软件中得到应用。8bit的ANSI编码只能表示256种字符,表示26个英文字母是绰绰有余的,但是表示汉字,韩国语等有着成千上万个字符的非西方字符肯定就不够了,正是如此才引入了UNICODE标准。 在软件开发中,特别是使用C语言的一些有关字符串处理的函数,ANSI和UNICODE是区分是用的,那么ANSI类型的字符和UNICODE类型的字符如何定义,如何使用呢?ANSI和UNICODE又如何转换呢? 一.定义部分: ANSI:char str[1024]; 可用字符串处理函数:strcpy( ), strcat( ), strlen( )等等。 UNICODE:wchar_t str[1024];可用字符串处理函数 二.可用函数: ANSI:即char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。 UNICODE:即wchar_t 可用字符串处理函数

字符串

末鹿安然 提交于 2020-01-25 21:22:48
字符串 字符串函数 strcmp() int strcmp(const char *str1, const char *str2) 返回值 如果返回值 < 0,则表示 str1 小于 str2 如果返回值 > 0,则表示 str2 小于 str1 如果返回值 = 0,则表示 str1 等于 str2 strcpy() char* strcpy(char* strDestination, const char* strSource); strcpy() 会把 strSource 指向的字符串复制到 strDestination。 strDestination的空间需要足够大来容纳strSource的数据,否则会溢出 返回值 strDestination中的字符串 3. 4. 字符与数字的转化 字符转数字加‘0’ 数字转字符减‘0’ 字符数组与字符串 来源: CSDN 作者: Mia@ 链接: https://blog.csdn.net/weixin_43008312/article/details/104032186

C++中存储区的划分

我是研究僧i 提交于 2020-01-25 20:33:45
一. 在c中分为这几个存储区 1.栈 - 由编译器自动分配释放 2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放 4.另外还有一个专门放常量的地方。- 程序结束释放 在函数体中定义的变量通常是在栈上,用malloc, calloc, realloc等分配内存的函数分配得到的就是在堆上。在所有函数体外定义的是全局量,加了static修饰符后不管在哪里都存放在全局区(静态区),在所有函数体外定义的static变量表示在该文件中有效,不能extern到别的文件用,在函数体内定义的static表示只在该函数体内有效。另外,函数中的"adgfdf"这样的字符串存放在常量区。比如: int a = 0; //全局初始化区 char *p1; //全局未初始化区 void main() { int b; //栈 char s[] = “abc”; //栈 char *p2; //栈 char *p3 = “123456”; //123456{post.content}在常量区,p3在栈上 static int c = 0; //全局(静态)初始化区 p1 = (char *)malloc(10);

char s []和char * s有什么区别?

风流意气都作罢 提交于 2020-01-25 19:57:48
在C语言中,可以在这样的声明中使用字符串文字: char s[] = "hello"; 或像这样: char *s = "hello"; 那么区别是什么呢? 我想知道在编译和运行时在存储持续时间方面实际发生了什么。 #1楼 只需添加:它们的大小也会得到不同的值。 printf("sizeof s[] = %zu\n", sizeof(s)); //6 printf("sizeof *s = %zu\n", sizeof(s)); //4 or 8 如上所述,对于数组 '\\0' 将分配为最后一个元素。 #2楼 区别在于 char *s = "Hello world"; 将放置 "Hello world" 在内存的只读部分 ,使 s 的指针,使得在这个内存非法任何写入操作。 这样做时: char s[] = "Hello world"; 将文字字符串放入只读内存中,并将该字符串复制到堆栈上新分配的内存中。 因此 s[0] = 'J'; 法律。 #3楼 char s[] = "hello"; 声明 s 为 char 数组,该数组足以容纳初始化程序(5 + 1 char s),并通过将给定字符串文字的成员复制到数组中来初始化该数组。 char *s = "hello"; 声明 s 到是指向一个或多个(更在这种情况下) char S和点直接在包含文字固定(只读)位置 "hello" 。

C++课程学习笔记第四周:运算符的重载

六眼飞鱼酱① 提交于 2020-01-25 17:55:12
1 运算符重载基本概念和形式 1.1 运算符重载基本概念 在数学上,两个复数可以直接进行+、-等运算。但在C++中,直接将+或-用于复数对象是不允许的,因为C++中预定义的运算符并未提供这种功能。 为了让对象也能通过运算符进行运算(这样代码更简洁,容易理解),C++提供了运算符重载的机制。 运算符重载的含义:对已有的运算符(C++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为。比如 5 + 4 = 9; complex_a + complex_b 生成新的复数对象。 运算符重载的目的:扩展C++中提供的运算符的适用范围,使之能作用于对象。 1.2 运算符重载的形式 返回值类型 operator 运算符(形参表){ …… } 运算符重载的实质是函数重载; 把含运算符的表达式转换成对运算符函数的调用,把运算符的操作数转换成运算符函数的参数; 运算符被多次重载时,根据实参的类型决定调用哪个运算符函数。 可以重载为普通函数,也可以重载为成员函数; 重载为成员函数时,参数个数为运算符目数减一;重载为普通函数时参数个数为运算符目数。 //示例 class Complex{ public: double real,imag; Complex( double r = 0.0, double i= 0.0 ):real(r),imag(i) { }

函数atof,atoi,atol,strtod,strtol,strtoul

大城市里の小女人 提交于 2020-01-25 10:51:20
atof (将字串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include <stdlib.h> 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。 返回值 返回转换后的浮点型数。 附加说明 atof()与使用strtod(nptr,(char**)NULL)结果相同。 范例 /* 将字符串a 与字符串b转换成数字后相加*/ #include<stdlib.h> main() { char *a=”-100.23”; char *b=”200e-2”; float c; c=atof(a)+atof(b); printf(“c=%.2f\n”,c); } 执行 c=-98.23   atoi(将字符串转换成整型数) 相关函数 atof,atol,atrtod,strtol,strtoul 表头文件 #include<stdlib.h> 定义函数 int atoi(const char *nptr); 函数说明 atoi(