函数指针

C++文件操作详解(ifstream、ofstream、fstream)

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-29 04:44:17
C++ 文件操作详解( ifstream 、 ofstream 、 fstream ) C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件 (Open a file) 对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说打开一个文件。被打开的文件在程序中由一个流对象(stream object)来表示 (这些类的一个实例) ,而对这个流对象所做的任何输入输出操作实际就是对该文件所做的操作。 要通过一个流对象打开一个文件,我们使用它的成员函数open(): void open (const char * filename, openmode mode); 这里filename 是一个字符串,代表要打开的文件名,mode 是以下标志符的一个组合: ios::in 为输入(读)而打开文件 ios::out 为输出(写)而打开文件 ios::ate 初始位置:文件尾 ios::app 所有输出附加在文件末尾 ios::trunc 如果文件已存在则先删除该文件 ios::binary 二进制方式 这些标识符可以被组合使用,中间以”或”操作符(|

A Tour to LLVM IR

百般思念 提交于 2019-12-28 17:12:28
https://zhuanlan.zhihu.com/p/66793637 https://zhuanlan.zhihu.com/p/66909226 内容概要 什么是LLVM IR?如何得到IR? LLVM编译的流程,IR文件之间的链接简介 C++ name mangling的用途,“extern C"作用的极简介绍 IR文件的布局 IR中函数定义的结构,什么是BB,什么是CFG IR是一个强类型语言,如何用工具检查IR的合法性 如何理解 Language reference 常见的terminator instruction介绍 如何利用工具得到函数的CFG 什么是SSA?SSA的好处和问题,以及如何解决这个问题 参考文献 what is tail reursion make clang compile to ll -cc1的含义 clang和clang++的区别 what is a linkage unit? LLVM LanguageRef extern "C"的作用 what is name mangling what is static single assignment? what is reaching definition? 1. 什么是LLVM IR? LLVM IR 是 LLVM Intermediate Representation,它是一种 low

关于int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试

倖福魔咒の 提交于 2019-12-27 17:08:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> csdn上这个写的挺好的,总的来说该参数是用来在命令行编译程序的时候用的,argc是整型,用来统计程序运行时发送给main函数的命令行参数的个数,argv是字符串数组,用来存放指向字符串参数的指针数组。 https://blog.csdn.net/dgreh/article/details/80985928 来源: oschina 链接: https://my.oschina.net/u/4433424/blog/3148195

C++输入输出流

ぃ、小莉子 提交于 2019-12-27 07:21:14
输入输出流 1. 用控制符输出格式,例: 1 #include <iostream> 2 #include <iomanip>//利用控制符输出必须包含iomanip头文件 3 using namespace std; 4 int main() 5 {int a; 6 cout<<"input a:"; 7 cin>>a; 8 cout<<"dec:"<<dec<<a<<endl; //以十进制输出 9 cout<<"hex:"<<hex<<a<<endl; //十六进制 10 cout<<"oct:"<<setbase(8)<<a<<endl; //八进制 11 char *pt="China"; 12 cout<<setw(10)<<pt<<endl; //宽度为10,China前补上5个空格 13 cout<<setfill('*')<<setw(10)<<pt<<endl; //China前补上5个* 14 double pi=22.0/7.0; 15 cout<<setiosflags(ios::scientific)<<setprecision(8);//科学记数法,8位小数 16 cout<<"pi="<<pi<<endl; //输出pi 17 cout<<"pi="<<setprecision(4)<<pi<<endl; //改为4位小数 18 cout<<"pi=

深入理解C语言内存管理

北慕城南 提交于 2019-12-27 02:10:21
之前在学Java的时候对于Java虚拟机中的内存分布有一定的了解,但是最近在看一些C,发现居然自己对于C语言的内存分配了解的太少。 问题不能拖,我这就来学习一下吧,争取一次搞定。 在任何程序设计环境及语言中,内存管理都十分重要。 内存管理的基本概念 分析C语言内存的分布先从Linux下可执行的C程序入手。现在有一个简单的C源程序hello.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 int var1 = 1; 4 5 int main(void) { 6 int var2 = 2; 7 printf("hello, world!\n"); 8 exit(0); 9 } 经过gcc hello.c进行编译之后得到了名为a.out的可执行文件 [tuhooo@localhost leet_code]$ ls -al a.out -rwxrwxr-x. 1 tuhooo tuhooo 8592 Jul 22 20:40 a.out ls命令是查看文件的元数据信息 [tuhooo@localhost leet_code]$ file a.out a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs),

libpcap抓取数据包

时光总嘲笑我的痴心妄想 提交于 2019-12-26 21:22:51
libpcap是数据包捕获函数库。该库提供的C函数接口可用于需要捕获经过网络接口数据包的系统开发上。libpcap提供的接口函数主要实现和封装了与数据包截获有关的过程。这个库为不同的平台提供了一致的编程接口,在安装了libpcap的平台上,以libpcap为接口写的程序,能够自由的跨平台使用。 linux下libpcap的安装:sudo apt-get install libpcap-dev linux下gcc编译程序:gcc my_pcap.c -lpcap 执行程序的时候如果报错: no suitable device found,以管理员权限运行程序即可,sudo ./my_pcap libpcap的抓包框架: 头文件: #include <pcap.h> 在/usr/local/include/pcap目录下 1.查找网络设备 char *pcap_lookupdev(char *errbuf) 该函数用于返回可被 pcap_open_live()或pcap_lookupnet()函数调用的网络设备名(一个字符串指针)。如果函数出错,则返回NULL,同时errbuf中存放相关的错误消息。 2.获得指定网络设备的网络号和掩码 int pcap_lookupnet(char *device, bpf_u_int32 *netp, bpf_u_int32 *maskp, char

c风格字符串函数

一曲冷凌霜 提交于 2019-12-26 03:08:23
十一、C 风格字符串 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1) 查找字符串 strpbrk(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找该集合的任一元素 strspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任一元素的偏移 strcspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找属于该集合的任一元素的偏移 * 具有指定长度的字符串处理函数在已处理的字符串之后填补零结尾符 2)字符串到数值类型的转换 strtod(p, ppend) 从字符串 p 中转换 double 类型数值,并将后续的字符串指针存储到 ppend 指向的 char* 类型存储。 strtol(p, ppend, base) 从字符串 p 中转换 long 类型整型数值,base 显式设置转换的整型进制,设置为 0

加密解密帮助类

故事扮演 提交于 2019-12-26 01:48:50
二进制数据的序列化反序列化和Json的序列化反序列化的重要区别   前言:最近一个一个很奇怪的问题,很明白的说,就是没看懂,参照下面的代码: /// <summary> /// 反序列化对象 /// </summary> /// <typeparam name="T">指定对象类型</typeparam> /// <param name="data">字节数组</param> /// <param name="isClearData">压缩完成后,是否清除待压缩字节数组里面的内容</param> /// <returns>指定类型的对象</returns> public static T DeserializeByBytes<T>(byte[] data, bool isClearData = true) { T t = default(T); if (data == null) return t; try { BinaryFormatter formatter = new BinaryFormatter(); using (MemoryStream ms = new MemoryStream(data)) { t = (T)formatter.Deserialize(ms); } formatter = null; if (isClearData) Array.Clear

Essential c++初学 第三章 basic c++ programming

谁说我不能喝 提交于 2019-12-25 19:53:42
泛型编程 1.指针的算术运算 为了操作容器中的数据而不用管它的数据类型是什么,使用泛型(generic)算法,不直接在容器身上进行操作,而是借用一对iterator,标识我们要进行迭代的范围。 1.对于array来说,传入array而不管array里面是什么 //写出template泛型 find()函数 template < typename T > T * find ( T * first , T * last , const T & value ) { if ( ! first || ! last ) return 0 ; for ( ; first != last ; ++ first ) { if ( * first == value ) return first ; //输出所查找元素的地址 } return 0 ; } int main ( ) { int ia [ 8 ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 } ; int * pi = find ( ia , ia + 8 , ia [ 3 ] ) ; //find()返回所查找元素的地址 } 2.传入vector而不管vector里面是什么 # include <vector> # include <iostream> //编写泛型find函数 template <

C语言博客作业05--指针

女生的网名这么多〃 提交于 2019-12-25 03:26:39
1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 可能因为这两周进度的加快,感到比较吃力,知识点比较抽象,不那么容易理解,也可能最近因为被准备考试,写论文等事情追赶着,对C语言、PTA这方面有所懈怠(我的错。。。T_T)。总之,在指针方面还存在很多不足,有的知识点没有及时掌握,还要课后花时间看课本,对一些用法或者需要注意的地方还不够熟悉,希望通过之后的时间可以抓紧时间,掌握不熟练或者遗漏的知识点,多加练习,掌握这方面的知识。 1.2.2 代码累计 2.PTA总分 2.1截图PTA中指针题目集的排名得分 2.2 我的总分: 125分 3.PTA实验作业 3.1 PTA题目 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 3.1.1 算法分析 定义 i,统计count=0; 定义 字符数组s[500001],指针*p; gets(s); //输入英语 i=strlen(s)-1;//取字符串长度 for i=strlen(s)-1 to 0 do if s[i]==' ' then if s[i+1]!=' '&&s[i+1]!='\0' //出现单词 p=s+i+1; count++; if count>1 then printf(" ");//控制输出最后一个单词没有空格 printf("%s",p); end if s