char函数

socketopt 函数

我是研究僧i 提交于 2020-02-05 05:24:39
本文转载链接: https://www.cnblogs.com/Ansing/p/5915538.html 功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位 于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须 给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。 用法: #include <sys/types.h> #include <sys/socket.h> int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen); 参数: sock:将要被设置或者获取选项的套接字。 level:选项所在的协议层。 optname:需要访问的选项名。 optval:对于getsockopt(),指向返回选项值的缓冲。对于setsockopt(),指向包含新选项值的缓冲。 optlen:对于getsockopt()

excel 如何用公式函数去除单元格的空格和回车 并进行 单元格字符串比对

删除回忆录丶 提交于 2020-02-05 05:10:23
废话不多说,先上效果图: 去除空格和回车公式: =SUBSTITUTE(SUBSTITUTE(A2," ",""),CHAR(10),"") 对比公式: =IF(SUBSTITUTE(SUBSTITUTE(A2," ",""),CHAR(10),"")=SUBSTITUTE(SUBSTITUTE(B2," ",""),CHAR(10),""),1,0) 以下为扩展: 可以看出:trim函数只能去掉前后的空格及回车,中间的无法去除 对比起来更是不一样 仅使用SUBSTITUTE函数也可以实现单个单元格去除空格和回车 但是对比的话却还是不一样 总结:还是使用最上面的最容易实现对比啦 来源: CSDN 作者: 咕女士 链接: https://blog.csdn.net/woguyanli/article/details/103936714

MIT_6.828_2018_Homework_shell

为君一笑 提交于 2020-02-05 04:15:53
shell源码地址: sh.c 执行简单命令 找到sh.c中 case ' ' 处,在此书写执行普通命令的代码。注意到: struct execcmd { int type ; // ' ' char * argv [ MAXARGS ] ; // arguments to the command to be exec-ed } ; 和函数 int execv ( const char * path , char * const argv [ ] ) ; 所以直接使用结构体提供的参数即可: // fprintf(stderr, "exec not implemented\n"); // Your code here ... execv ( ecmd -> argv [ 0 ] , ecmd -> argv ) ; break ; I/O重定向 I/O重定向的思想就是将标准输入输出(文件描述符为0、1)定向到需输入或输出的文件。代码如下: //fprintf(stderr, "redir not implemented\n"); // Your code here ... close ( rcmd -> fd ) ; int fd = open ( rcmd -> file , rcmd -> flags , 0600 ) ; if ( fd < 0 ) { fprintf (

keepalived源码解析 —— parser.c

不问归期 提交于 2020-02-05 00:39:11
1、strspn 与 strcspn: size_t strspn(const char *str1, const char *str2):查找 str1 中第一个不出现在 str2 的字符的下标。 size_t strcspn(const char *s, const char * reject):从字符串 s 的第一个字符开始,计算连续多少个字符不在 reject 所指的字符串中。返回值:连续字符的个数 2、strdup 与 strndupa: char *strdup(const char *s):返回一个指向 s 副本的指针,这个副本内存是由 malloc 分配,使用完之后,需要使用 free() 释放内存。 char *strndupa(const char *s, size_t n):与 strdup() 类似,但是最多拷贝 n 个字节,若 s 的长度大于 n,则复制 n 个字节,并在末尾添加 ‘\0’ 3、void memmove( void dest, const void* src, size_t count ): 拷贝字节 若目标区域与源区域没有重叠,则和memcpy函数功能相同 若目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,但复制后源内容会被更改。 4、int glob(const char

C++(2):virtual、explicit和template

谁都会走 提交于 2020-02-04 19:15:57
C++继承 : 通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。 C++继承分为三类: 公有继承 基类的公共成员和受保护成员在派生类中访问属性还是不变,在派生类中,只有基类的私有成员在派生类中不可直接访问 即派生类的访问权限:public不变、private不可见、protected不变。 私有继承 基类的公用成员和保护成员都以私人身份出现在派生类中,派生类中的其他成员可以直接访问基类的公共和保护成员 即派生类的访问权限:public和protected变为private 保护继承 基类的公用成员和保护成员都以保护身份出现在派生类中。 即派生类访问权限:public变成protected、protected不变 举个例子:比如在之前引入联合体的学校信息管理系统,在学校信息分为职工信息和学生信息,两者信息有相同的部分,也有不同的部分,我们把相同的部分作为基类,把两者不同的部分作为两个不同的派生类,这样就可以满足两种需求。 class information { public : information ( char a , char b , int c ) { name = a ; sex = b ; age =

2020寒假作业-2

六眼飞鱼酱① 提交于 2020-02-04 18:46:38
这个作业属于哪个课程 2020年面向对象程序设计 这个作业要求在哪里 面向对象程序设计寒假作业2 这个作业的目标 1.继续完成编程题 2.新建一个github仓库,并把作业推送到该仓库。 3.发布博客 作业正文 https://www.cnblogs.com/ying-hua/p/12240862.html 其他参考文献 https://blog.csdn.net/xinjitmzy/article/details/78967204 http://xstarcd.github.io/wiki/windows/windows_cmd_summary_commands.html https://www.cnblogs.com/hugb/articles/7410325.html 一、编程题优化 此次优化取消了穷举法,使代码更加简短 将定义、计算和看看模块写成了函数 完整代码(v2.0) #include<stdio.h> #include<math.h> #include<stdlib.h> #include<string.h> struct Var{ //定义结构体,将汉字和英文变量一一对应 int engv; //英文变量 char chi[20]; //汉字变量 }; struct Var var[100]={0,""}; void error() //错误输出 { printf

【Linux】进程控制

别等时光非礼了梦想. 提交于 2020-02-04 04:03:15
一.进程创建 在linux中利用fork函数创建子进程,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。 详悉fork()函数 从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。 #include <unistd.h> pid_t fork(void); 返回值: 子进程中返回0 父进程返回子进程id 出错返回-1 fork函数被调用一次将返回两次,在子进程中返回0,在父进程中返回子进程的ID。 子进程获得父进程的数据空间、堆、栈副本 #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <unistd.h> #include <sys/time.h> #include <malloc.h> int globvar=6;//全局变量 char buf[]="hello world\r\n"; int main( ) { int var;//栈上变量 pid_t pid; var = 88; int *ptr=(int *)malloc(sizeof(int)); *ptr=2; if(write(STDOUT_FILENO,buf,sizeof(buf)-1)!=sizeof(buf)-1) { printf("write error\r\n"); return -1;

C++学习笔记12:赋值运算符‘=’的重载

一世执手 提交于 2020-02-04 03:07:46
1 目的:希望赋值运算符两边的类型可以不匹配 eg:将int类型变量赋值给一个Complex对象;或者吧一个char*类型的字符串赋值给一个字符串对象。 2 赋值运算符‘=’只能重载为成员函数 3 eg:(见本工程fuzhichongzai.cpp) /** * 赋值运算符‘=’重载例子 * */ # include <iostream> # include <cstring> using namespace std ; class String { private : char * str ; // 私有成员变量 str是一个指针,用来指向动态分配的存储空间,字符串就放在动态分配的存储空间 public : // 构造函数 new一个字符数组,只有一个元素,使得指针str指向new出来的存储空间 相当于 char* str = new char[1]; String ( ) //:str(new char[1]) { str = new char [ 1 ] ; str [ 0 ] = 0 ; // 初始化后str指向一个空字符串 cout << "调用无参构造函数" << endl ; } const char * c_str ( ) { return str ; } // 对赋值运算符进行重载,接收的参数是 const char* 返回值为String& String &

Linux系统编程:进程控制

非 Y 不嫁゛ 提交于 2020-02-04 02:07:50
一、进程相关操作与编程对应函数 1.进程创建 :两种方式来实现。 ①fork:创建一个子进程,父子进程共享一份代码程序,但是各有一份独立的数据,为了效率和保持数据的独立采用写时复制技术(COW)。运行无优先级。 #include <unistd.h> pid_t fork(void); 返回值:成功——子进程(0),父进程(子进程pid)、失败——(-1) ②vfork:创建一个新进程,子进程复制一份父进程的数据和堆栈空间(COW技术),继承父进程的用户代码、用户组、环境变量、打开的文件等资源,但是子进程不会继承父进程的文件锁定和未处理的信号。子进程优先执行,直到子进程调用exec函数或退出。在调用exec或exit之前,子进程和父进程的数据是共享的。 #include<unistd.h> pid_t vfork(void); 返回值:成功——子进程(0),父进程(子进程pid)、失败——(-1) 2.进程等待 ①wait:直到有信号来到或所有子进程结束时父进程才恢复执行。如果在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值status。 #include<sys/types.h> #include<sys/wait.h> pid_t wait (int * status); 返回值:成功——子进程PID,失败——(-1) ②waitpid

Unix进程控制

 ̄綄美尐妖づ 提交于 2020-02-04 02:04:23
  wait函数和waitpid函数用于捕获子进程停止信号,获取子进程停止状态,并在子进程结束后清除该进程所占用的系统资源。其函数原型为 #include <sys/wait.h> pid_t wait(int *statloc);                      //返回已结束子进程id或-1 pid_t waitpid(pid_t pid, int *statloc, int options);     //返回已结束子进程id、0或-1   wait函数监听所有子进程,当存在任一子进程停止时,wait函数立即返回。waitpid函数监听子进程受pid参数限制,当pid>0时,pid值为指定子进程id;当pid值为0时,waitpid函数监听与父进程具有相同用户组的子进程;当pid值为-1时,waitpid函数监听所有子进程,与wait函数等价;当pid<-1时,waitpid函数监听所有用户组id与pid绝对值相等的子进程。参数statloc用于存储子进程返回状态(是否正常结束、是否异常结束、是否暂停、进程返回值),options用于指定waitpid函数何时返回。   对子进程返回状态需要使用宏定义进行判断,如: WIFEXITED(status); //子进程正常结束时为真 WIFSIGNALED(status); //子进程被异常终止时为真 WIFSTOPED