char函数

C语言strcat()函数:字符串连接(拼接)

巧了我就是萌 提交于 2019-12-05 13:54:20
C语言strcat()函数:字符串连接(拼接) C语言 strcat() 函数用来将两个字符串连接(拼接)起来。 头文件:string.h 语法/原型: char*strcat(char* strDestination, const char* strSource); 参数说明: strDestination:目的字符串; strSource:源字符串。 strcat() 函数把 strSource 所指向的字符串追加到 strDestination 所指向的字符串的结尾,所以必须要保证 strDestination 有足够的内存空间来容纳两个字符串,否则会导致溢出错误。 注意:strDestination 末尾的 \0 会被覆盖,strSource 末尾的 \0 会一起被复制过去,最终的字符串只有一个 \0 。 返回值:指向 strDestination 的指针。 【实例】使用C语言 strcat() 函数将用户输入的两个字符串拼接在一起。 #include <stdio.h> #include <string.h> int main(){   char str1[101] = { 0 };   char str2[50] = { 0 };   gets(str1);   gets(str2);   strcat(str1, str2);   puts(str1);  

java中的string对象深入了解

自闭症网瘾萝莉.ら 提交于 2019-12-05 13:37:52
摘自: https://www.cnblogs.com/yanggb/p/11613042.html java中的string对象深入了解 这里来对Java中的String对象做一个稍微深入的了解。 Java对象实现的演进 String对象是Java中使用最频繁的对象之一,所以Java开发者们也在不断地对String对象的实现进行优化,以便提升String对象的性能。 Java6以及之前版本中String对象的属性 在Java6以及之前版本中,String对象是对char数组进行了封装实现的对象,其主要有4个成员成员变量,分别是char数组、偏移量offset、字符数量count和哈希值hash。String对象是通过offset和count两个属性来定位char[]数组,获取字符串。这样做可以高效、快速地共享数组对象,同时节省内存空间,但是这种方式却可能会导致内存泄漏的发生。 Java7、8版本中String对象的属性 从Java7版本开始,Java对String类做了一些改变,具体是String类不再有offset和count两个变量了。这样做的好处是String对象占用的内存稍微少了点,同时String.substring()方法也不再共享char[]了,从而解决了使用该方法可能导致的内存泄漏问题。 Java9以及之后版本中String对象的属性 从Java9版本开始

数据结构之第一章 引论 及 课后题答案

谁说胖子不能爱 提交于 2019-12-05 12:45:13
数据结构之第一章 引论 及 课后题答案 写代码许多年,总是觉得浮于表面,不能深入,看大神说研究一下数据结构和算法可以改进不少,所以决定学习一下,课本采用 《数据结构与算法分析:c语言描述》 来学习。 第一章主要是介绍了本书的主旨是为了解决什么问题,并简单以选择问题和填字游戏问题做了简单介绍,初次之外对要用到的数学知识(指数、对数、级数、模运算和证明方法)做了一个简要介绍,不至于在后续的学习过程中因为不懂而懵逼。本文的组织形式如下: 知识点总结—思维导图 课后习题练习 知识点总结 知识点的总结,如下图所示: 简介如下: 选择问题 :在N个数中,选择打印出大小排名为k的数。思路有两个,一是将N个数排序,打印第k个数即可。二是在N个数中,随便取k个数放在数组a中,降序排列,然后遍历剩下的N-k个数,每个数都与a[k-1]比较,如果小于a[k-1]则忽略,如果大于a[k-1],则将这个数插入到a中合适的位置,并把a数组顺延,直到最后,得到的数就是要的数值。更有效的方式,书中将在后续给出,此处不做说明。该问题的代码将在 课后题1 中解答。 找单词 :给出N个单词,和一个二维字符数组,每个二维数组的值都是字符,要求按照二维数组的行、列及对角线的值进行拼接,能够找到这N个单词。书中同样给了两个方法来解决这个问题。一是对单词表中每个单词,检查二维数组的每行、列和对角线,验证单词存在不存在

剑指offer题解(持续更新中)

孤街醉人 提交于 2019-12-05 12:23:50
3-1 数组中重复的数字 每遍历数组中的一个数字,就让其归位(放置在正确的数组下标)。当在归位的过程中,发现该数组下标所存放的数字和当前要归位的数字相同时,则发生了重复,返回该数字。 空间复杂度O(1),时间复杂度O(n)。 public class FindDuplicateNum_3 { public static boolean findDuplicateNum(int[] arr, int length, int[] dup) { if (arr == null || length <= 0) { return false; } //时间复杂度O(n) for (int i = 0; i < length; i++) { //每个数字最多交换2次 while (arr[i] != i) { if (arr[i] == arr[arr[i]]) { dup[0] = arr[i]; return true; } swap(arr, i, arr[i]); } } return false; } private static void swap(int[] arr, int i, int j) { int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } 3-2 不修改数组找出重复数字 空间复杂度O(1),采用类似二分查找的算法

2019-2020-1 20175304 20175303 20175327 20175335 实验三-并发程序

筅森魡賤 提交于 2019-12-05 11:57:34
2019-2020-1 20175304 20175303 20175327 20175335 实验三-并发程序 实验过程 实验三-并发程序-1 实验要求 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 上方提交代码 附件提交测试截图,至少要测试附件中的两个文件 实验步骤 首先先学习一下命令wc使用 1.在命令行输入 man wc 2.使用方法 3.部分实例 (1)统计行数 $wc –l file (2)统计单词数 $wc –w file (3)统计字符数 $wc –c file (4)统计流中的字符数 $echo –n 1234 | wc –c 基于Linux Socket程序设计实现wc Sever端代码: #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #include<unistd.h> #define SERVER

文件打包学习1

只愿长相守 提交于 2019-12-05 11:49:03
打包的定义   什么是打包?打包这个词很形象,就是把零碎的文件进行统一重封装,统一管理,比如我们常见的RAR文件,ZIP文件都是很常见的包裹格式 打包的意义 比如RAR包,我们虽然能有工具解压,但是我们却基本上没有相关的SDK来做二次开发 ZIP包虽然有SDK来读取,但是对于通用的文件格式,我们无法做到保护资源的需求 如果只是为了文件管理的方便,无所谓别人解开资源的话,直接用现成的ZIP开发的SDK即可 打包的方式 分类打包 比如图片资源打一个包,声音资源打一个包 全部打包 把所有资源一起打包 打包的一般准则和规范 原始文件的标识,这个标识可以使原始文件名+路径名,或者也可以是转换后的数据如ID等,先从最简单的说起,使用原始文件名+路径名 原始文件的大小,把文件打进包裹之后,我们要知道这个原始文件有多大 原始文件的数据打包在包裹的什么位置 打包程序的实现框架 包裹文件的定义 添加CreatPackage(创建空白包裹)函数、AddFileToPackage(添加一个文件到包裹)函数 CreatePackage(创建空白包裹)函数的实现 AddFileToPackage(添加一个文件到包裹)函数的实现 package.h #pragma once #include <cstdio> #include <vector> /* * 根据分析得知,我们需要将多个文件打包一个文件中

2019-2020-1 20175221 20175225 20175226 实验三 实时系统

老子叫甜甜 提交于 2019-12-05 11:48:37
2019-2020-1 20175221 20175225 20175226 实验三 实时系统 实验要求 任务一 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 上方提交代码 附件提交测试截图,至少要测试附件中的两个文件 任务二 使用多线程实现wc服务器并使用同步互斥机制保证计数正确 上方提交代码 下方提交测试 对比单线程版本的性能,并分析原因 实验步骤 任务一 先使用 man wc 了解wc命令的功能与用法 在了解了各参数的作用后,对 test1.txt 和 test2.txt 分别试验 wc wc -w 功能 用socket编程实现 客户端 服务器端 实验代码 客户端 #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #define SERVER_PORT 175225 #define BUFFER_SIZE 1024

strpbrk(), strcasecmp(), strspn()

别来无恙 提交于 2019-12-05 11:33:12
Linux字符比较函数: strpbrk() strcasecmp() strspn() #if _MSC_VER #define strcasecmp _stricmp //strcasecmp 找不到标识符 #endif #include <iostream> #include <string.h> using namespace std; int main() { //====================== strpbrk (比较的字符串,被比较的字符串)======================= //函数原型:extern char *strpbrk(char *str1, char *str2) //参数说明:str1待比较的字符串,str2为指定被搜索的字符串。 //所在库名:#include <string.h> //函数功能:比较字符串str1和str2中是否有相同的字符,如果有,则返回该字符在str1中的位置的指针。 //返回说明:返回指针,搜索到的字符在str1中的索引位置的指针。 char str1[] = "hellostringEFG"; char str2[] = "stringABC"; char *str3 = new char[100]; memset(str3, '\0', sizeof(str3)); str3 = strpbrk

C++对象之内存(无继承)

不打扰是莪最后的温柔 提交于 2019-12-05 11:29:16
从内存的角度考虑,不同情况下的C++类有什么区别呢?下面从空类、具有不同变量/函数、具有静态变量、继承、多态、虚拟继承等情况分析C++对象的内存空间大小和内存布局。本文讨论没有继承的情况,下一篇讨论有继承的情况 如无特别说明,本文代码均在64位机器上的VS2019运行。 无继承 一、内存空间占用情况 空类 class Test { }; 输出sizeof(Test)得到的结果为1。 空类的大小并不是0。这是因为空类也可以被实例化,而且它的每个实例也和其他实例一样在内存中拥有独一无二的地址。因此编译器会给空类加一个字节,这样在实例化时就可以给它的实例分配内存地址了。 有函数的类 class Test { public: //一般需要定义构造函数、复制构造函数和重载操作符时,类是有成员变量的, //但这里仅为测试类的函数的内存占用情况,因此不设成员变量,且让函数为空 Test() {} //constructor Test(const Test& t) {} //copy constructor void func(){ //inline function cout<<"hey hacker\n"; } void func2(); //non-inline function Test& operator =(const Test& t){} //operator ~Test() {}

java运算符、流程控制语句

≯℡__Kan透↙ 提交于 2019-12-05 10:39:40
​ 常见的进制 十进制 1010 二进制 满二进一 0B10101010 (JDK1.6是可以这样的) 八进制 满8进一,数字在0_7之间 077 078(error) 十六进制 满16进一,数字在0-9 A B C D E F 0x开头,x不区分大小写,0x0010 0XAABB 计算机中,所有的内容在内存中都是二进制表示的 'A'-->它的ASII 65 1000001 进制的转换 ==十进制转成二进制 6-->110 21-->10101 ==二进制转十进制 10101-->1*2^0+0*2^1+1*2^2+0*2^3+1*2^4=21 ==二进制转八进制 10101010001010111---->010 101 010 001 010 111==0252127 ==二进制转十六进制 10101010001010111 --->0001 0101 0100 0101 0111==0x15457 计算机中,一个二进制位是一个比特位(bit), 8个比特位是一个字节 1024个字节,就是1k 1024k是1M 1024M是1G 1024G是1T 1024T是1p 你好 4个字节 101010101010101001 4/1024==2/512 1/256 负数在内存中表现的形式:是正数的按位取反+1 3 -3 byte a=3; //1个字节 0000 0011 1111