1、节点添加
将trap节点设置为**的格式;
代码:
systemEvent NOTIFICATION-TYPE (将节点类型设置为trap类型,即NOTIFICATION-TYPE)
--SYNTAX DisplayString
--MAX-ACCESS read-only
STATUS current
DESCRIPTION "The system event "
::= { event 1 }
Comment OBJECT IDENTIFIER ::= { event 20 }
2、sccanf学习
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct A{
char temp_date[64];
char temp_mode[64];
char temp_pri[64];
char temp_admin[64];
};
int main()
{
A a;
sscanf("添加源地址转换策略,名称:[1],源地址:[172.24.187.30],目的地址:[172.24.187.32],入接口:[any]","%*[^[][%[^]]%*[^[][%[^]]%*[^[][%[^]]",a.temp_date,a.temp_mode,a.temp_pri);
printf("1=%s\n",a.temp_date);
printf("2=%s\n",a.temp_mode);
printf("3=%s\n",a.temp_pri);
printf("4=%s\n",a.temp_admin);
}
4、strstr学习
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *a={};
char *strstr(char *a,char *b)
{
int alen, blen, i;
alen = strlen(a);
blen = strlen(b);
for(i=0; i <= alen-blen; i++, a++)
if(strncmp(a, b, blen) == 0) return a;
return NULL;
}
int main()
{
if(!strstr("删除字符串,,哈哈哈哈哈删除", "删除"))
{
printf("OK");
}
}
要注意函数返回值,char *strstr(char *a,char *b)返回值为a或者NULL,所以判断!strstr()不正确,正确应为:
if (strstr(log_msg_cn(log_buf), "删除") != NULL) {
snprintf(v1buf->vop, sizeof(v1buf->vop), "%s", "delete");
}
5、结构体
#pragma pack(push) //保存对齐状态
#pragma pack(1)
struct value1{
char vdata[254];
char vmod[254];
char vpri[254];
};
#pragma pack(pop)
//定义结构体指针并初始化,往结构体指针指向的内存中存入内容,结构体转为char *数组,返回char*数组地址,返回指针才可以接收到内容,但是墙上面不通过涉及到进程间通讯。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma pack(push) //保存对齐状态
#pragma pack(1)
struct value1{
char vdata[254];
char vmod[254];
char vpri[254];
};
#pragma pack(pop)
char * msg()
{
struct value1* vbuf=(struct value1*)malloc(sizeof(struct value1));
memset(vbuf, 0, sizeof(value1));
char * cp;
char *p;
#define MAX_SEND_STR_LEN 1023
char send_buf[8192];
snprintf(vbuf->vdata, sizeof(vbuf->vdata),"1111111111");
snprintf(vbuf->vmod, sizeof(vbuf->vmod), "TRAP_MOD_FMT,log_module_int2str(module)");
snprintf(vbuf->vpri, sizeof(vbuf->vpri), "TRAP_pri_FMT,log_severity_int2str(level)");
memcpy(&send_buf,&vbuf,sizeof(value1));
printf("send_buf%s\n",send_buf);
p=(char* )send_buf;
return p;
}
int main() {
value1 *p;
p=(value1 *)(msg());
printf("%s\n",p->vdata);
printf("%s\n",p->vmod);
printf("%s\n",p->vpri);
return 0;
}
6、正则表达式学习
#define MAX_BUF_NUM 30
char str_buf[MAX_BUF_NUM][128];
char* getsubstr(char *s, regmatch_t *pmatch)
{
static char buf[100] = {0};
memset(buf, 0, sizeof(buf));
memcpy(buf, s+pmatch->rm_so, pmatch->rm_eo - pmatch->rm_so);
return buf;
}
int zhengze(char *buf,const char *pattern, int num)
{
regmatch_t pmatch;
regex_t reg;
int i = 0;
int ret = 1;
regcomp(®, pattern, REG_EXTENDED);
int offset = 0;
while(offset < strlen(buf) && (i<num) ){
int status = regexec(®, buf + offset, 1, &pmatch, 0);
if(status == REG_NOMATCH)
ret = 0;
else if(pmatch.rm_so != -1){
char *p = getsubstr(buf + offset, &pmatch);
//printf("[%d, %d]: %s\n", offset + pmatch.rm_so + 1, offset + pmatch.rm_eo, p);
strlcpy( *(str_buf+i), p, sizeof(*(str_buf+i)));
i++;
}
offset += pmatch.rm_eo;
}
return ret;
regfree(®);
}
二维数组的读取:
#include<stdio.h>
#include<string.h>
int main()
{
char str[10][20];
int i;
for(i=0;i<10;i++)
gets(*(str+i));
for(i=0;i<10;i++)
puts(*(str+i));
}
[0-9a-zA-Z]+
"\[[0-9a-zA-Z]*\]+"
const char *pattern = "[[\u4e00-\u9fa5.a-zA-Z0-9'@-_-]*]";