C/C++
文章平均质量分 77
zhongyoubing
这个作者很懒,什么都没留下…
展开
-
输入一个字符串,输出这个字符串中重复的元素及其个数
//输出字符串各个字符的个数#include "iostream"#include "windows.h"#include "string"#include "map"using namespace std;int main(){ string str; int len; char word; cin>>str; int index; map原创 2016-05-30 08:37:23 · 3256 阅读 · 0 评论 -
C/C++中去除字符串中的无效字符,用于加载配置文件
static void trim1(char * str, char c){c=' ';char * sp=str;while(*str){if(*str!=c){*sp=*str;sp++;}str++;}sp='\0';}static void trim2(string& str,string& del,string:原创 2016-05-02 11:12:32 · 3967 阅读 · 0 评论 -
htons(), ntohs(),htonl(),ntohl(), inet_addr() ,inet_ntoa() || bzero()
1. htonl() , ntohl() ,htons(),ntohs()htonl() :“Host to Network Long int” 32Bytesntohl() :“Network to Host Long int” 32Byteshtons():“Host to Network Short int” 16Bytesntohs():“Network to原创 2017-08-18 20:34:22 · 345 阅读 · 0 评论 -
htons(), ntohs(),htonl(),ntohl(), inet_addr() ,inet_ntoa() || bzero()
htonl() , ntohl() ,htons(),ntohs()#include <netinet/in.h>uint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostshort);uint32_t ntohl(uint32_t netlong);uint16_t ntohs(uint16_t netshort);ht原创 2017-09-27 19:24:19 · 357 阅读 · 0 评论 -
C语言字符串处理的一些函数strok,strstr, strchr,strsub
字符串切割函数 函数原型:char *strtok(char *s, char *delim); 函数功能:把字符串s按照字符串delim进行分割,然后返回分割的结果。 函数使用说: 1.strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’/0′)来替换,直到找遍整个字符串。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位。(原创 2017-09-29 10:52:52 · 16019 阅读 · 1 评论 -
C/C++消除字符串中的无效字符,用于加载配置
字符数组是一个数组,每个元素的值都可以改变。而字符串指针指向的是一个常量字符串,它被存放在程序的静态数据区,一旦定义就不能改变。这是最重要的区别。#include<stdio.h>#include<string.h>#include<stdlib.h>#include<ctype.h>void trim_space(char* str){ if(!str) retu原创 2017-09-25 19:37:07 · 7380 阅读 · 0 评论 -
snprintf(), fwrite(),fread() ,fprintf() ,fseek() ,ftell()
1 .snprintf()函数原型如下:int _snprintf(char *buffer, size_t count,const char *format [,argument] ... );用于将格式化的数据写入字符串,If len count, then len characters are stored in buffer, a null-terminat原创 2017-08-25 10:02:31 · 335 阅读 · 0 评论 -
tcpreplay介绍以及源码分析
tcpreplay介绍tcpreplay主要用于重放pcap数据包,还可以对pcap文件进行修改,比如修改ip地址和端口号等,其中主要包含了一下几个模块:tcpreplay:pcap重放模块,其中提供了包重放速度控制,循环控制,重放模式等功能。tcpreweite: 修改网络中mac,IP地址,端口信息。tcpbrige:利用tcprewrite的功能实现两个网络部分的桥tcpreplay的作者在...原创 2018-01-27 17:31:42 · 4394 阅读 · 0 评论 -
pktgen-dpdk源码解析
pktgen-dpdk使用dpdk加速包的发送接收,也可以发送接收pcap包,命令行如下:./app/app/x86_64-native-linuxapp-gcc/pktgen -l 0-4 -n 3 -- -P -m "[11:3].0,[2:4].1" -s 0:[.pcap_filepath] (pktgen-dpdk.3.4.8)下面的源码讲述采用的也是3.4.8版本,主要讲述源码中的设计...原创 2018-03-09 20:24:45 · 3516 阅读 · 0 评论 -
编译,连接,编译器做的一系列具体事项
通常在windows上编写代码后,需要将其在linux上编译之后才可以运行,以gcc 为例。对于简单的我们一般直接使用:gcc example.c -o example其中主要做了如下工作:对于复杂多个源码文件安装,一般有如下几个步骤:./configuremakemake install下面介绍这几个步骤所做的事:1. configure 这一步主要是检查系统的环境,检查函数库,指定...原创 2018-06-07 10:59:53 · 399 阅读 · 0 评论 -
DPDK-pdump工作原理解析
目录 1 dpdk 配置2 抓包原理3 源码解析1 dpdk 配置在使用dpdk-pdump之前,需要设置配置参数,在CONFIG中的common_base中分别设置CONFIG_RTE_LIBRTE_PMD_PCAP=y和CONFIG_RTE_LIBRTE_PDUMP=y。配置环境变量:在 ~/.bashrc中加入如下两行:export RTE_SDK=dpdk_...原创 2018-07-28 10:26:28 · 7259 阅读 · 2 评论 -
指定网卡发送数据包
1. 指定网卡发送数据指定网卡名需要使用struct sockaddr_ll,struct ifreq, 使用ioctl()函数获取网卡索引号,使用原始套接字发送UDP数据,代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <net/if.h>...原创 2018-11-15 18:50:40 · 5421 阅读 · 2 评论 -
struct ip 和struct iphdr的差别 , <netinet/*.h>和<linux/*.h>
(1)struct ip 和struct iphdrstruct ip {#if BYTE_ORDER == LITTLE_ENDIAN u_char ip_hl:4, /* header length */ ip_v:4; /* version */#endif#if BYTE_ORDER == BIG_ENDIAN原创 2017-08-20 21:50:50 · 8858 阅读 · 0 评论 -
fgets()函数
fgets()函数原型如下“char* fgets(char* s int n, FILE* stream)参数: s: 字符型指针,指向存储读入数据的缓冲区的地址。 n: 从流中读入n-1个字符 stream : 指向读取的流。 返回值: 1. 当n 2. 当n=1 时,转载 2017-08-28 19:20:27 · 3562 阅读 · 1 评论 -
malloc/free和new/delete的区别
相同点 都可用于申请动态内存和内存释放。不同点 (1)操作对象不同,malloc/free是C++/C的标准函数库函数,new/delete是C++的运算符。对于非内部数据类的对象而言,光用malloc/free无法满足动态动态对象的要求,对象创建需要自动执行构造函数,对象消亡要自动执行析构函数。malloc/free是库函数而不是运算符,不在编译器控制前线之内,所以必须使用new/delete原创 2017-03-27 16:04:12 · 356 阅读 · 0 评论 -
Sytem函数
Linux 下system函数的源码int system(const char * cmdstring){ pid_t pid; int status; if(cmdstring == NULL){ return (1); } if((pid = fork())<0){ status = -原创 2017-03-23 20:11:52 · 526 阅读 · 0 评论 -
统计字符串中重复的字符个数并输出
//输出字符串各个字符的个数 /* 对重复的字符将其下标存放在vector中,使用unique函数只保存一份重复字符的数字 通过下标查找到相应的字符,从map中取出对应的统计数字 */include “iostream”include “windows.h”include “string”include “map”include “vector”include “algorithm”incl原创 2016-05-30 08:55:22 · 5798 阅读 · 0 评论 -
删除字符串中重复的字符串
删除字符串中重复的字符串//删除string重复的元素#include "iostream"#include "string"#include "windows.h"#include "stdio.h"using namespace std;int main(){ string str; const char *a; int len,n; int num=0原创 2016-05-29 18:05:51 · 583 阅读 · 0 评论 -
C++连接数据库二
#include "sqlServer.h"#include #include#include using namespace std;/*数据库连接步骤:(1)初始化com组件 CoInitialize() (2)实例化连接对象 (3)建立连接 (4)实例化数据集 (5)获取数据*/SqlConnection::SqlConnection()原创 2016-05-02 11:06:46 · 708 阅读 · 0 评论 -
C++中对路径字符串解析的两个重要函数
(1)void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext ); 将给定的路径字符串分割成各个部分参数:path:全路径(IN)drive:盘符(OUT)dir:除去盘符和文件名,中间的那段路径(OUT)fname:文件名,不包含扩展名(OUT)原创 2016-04-22 15:27:37 · 966 阅读 · 0 评论 -
C++连接数据库一
#include #include#include#include #include /*连接sql server数据库*/using namespace std;#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")原创 2016-05-02 10:59:36 · 941 阅读 · 0 评论 -
C/C++内存管理
内存分配方式在C++中,代码分别存储在五个区,分别是堆区,栈区,自由存储区,全局/静态区,常量存储区。 栈区:函数调用时,函数内部的局部变量在栈上开辟空间,在栈区保存函数的返回地址和堆栈指针,使函数低啊用完成后返回被调用的地方。栈内存分配运算内置于处理器的指令集中,效率高,但分配的容量有限。 堆区:有C++中的new分配的内存块,但是释放编译器不管,由我们的程序去操作,每个new对应一个dele转载 2017-03-27 09:56:02 · 482 阅读 · 0 评论 -
读取不定长字符串
C语言中通常使用scanf读取输入,但如果需要给一个char* 读取字符串,则需要使用malloc()预先分配空间,但是因为实现并不知道需要输入的字符串长度,所以可能因为分配的空间不足产生溢出。读取单个字符使用getchar(),可通过它实现不定长字符串的输入。1.何时结束循环输入 当输入时,按下回车键,输入缓冲区中除了字符串,还有一个换行符\n,因此当getchar()读到换行符时,原创 2017-05-04 10:28:50 · 5704 阅读 · 4 评论 -
结构体指针初始化问题
(1)结构体指针是否需要初始化struct student{char* name;int score;struct student* next;}stu,*stu1;stu.name=(char*)malloc(sizeof(char)); //1 结构体成员指针需要初始化strcpy(stu.name,"Jim");stu.scor=90;s原创 2017-08-22 20:02:40 · 6264 阅读 · 0 评论 -
gcc的使用
1. gccgcc是一个 GUN C compiler2. 简单编译test.c #includeint main(){printf("this is a test\n");return 0;}一步到位的编译时:gcc test.c -o test实际上,上面经过了四个阶段进行的,即预处理(也称预编译,Preprocessing)、编译(Compil原创 2017-08-28 16:17:36 · 290 阅读 · 0 评论 -
获取网卡信息
本代码通过ioctl获取的网卡只有网卡为up的,不能获取ifconfig查看的所有信息:#include <stdio.h>#include <string.h>#include <net/if.h>#include <sys/ioctl.h>#include <arpa/inet.h>#include <errno...原创 2018-11-15 22:36:25 · 866 阅读 · 0 评论