C字符串截取、C数据库操作
1、字符串截取
#include<stdio.h> #include<stdlib.h> char* substring(char* ch,int pos,int length) { //定义字符指针 指向传递进来的ch地址 char* pch=ch; //通过calloc来分配一个length长度的字符数组,返回的是字符指针。 char* subch=(char*)calloc(sizeof(char),length+1); int i; //只有在C99下for循环中才可以声明变量,这里写在外面,提高兼容性。 pch=pch+pos; //是pch指针指向pos位置。 for(i=0;i<length;i++) { subch[i]=*(pch++); //循环遍历赋值数组。 } subch[length]='\0';//加上字符串结束符。 return subch; //返回分配的字符数组地址。 } int main(){ char* result; char* tstStr = "abcdefg"; result = substring(tstStr,0,2); printf("结果:%s",result); }
结果输出第0个字节开始的两个字节
2、strncpy与strcpy函数
(1) strncpy:
char *strncpy(char *dest, const char *src, int n) //目标地址 原地址 长度
将src指向字符串的前n个字节(不包含\0)赋值到dest指向的字符串中。
截取从某个字节开始的N个字节:
char dest[4] = {""}; char src[] = {"123456789"}; strncpy(dest, src+3, 3); //从第三个字节开始的三个字节长度 puts(dest);
输出:456
(2) strcpy:
strcpy把src地址开始且含有\0个字符串复制到dest开始的地址空间,返回值为char*类型,
感觉strncpy和strcpy就只有有没有赋值到\0的区别了
3、C语言数据库操作
以前都是用java操作数据库比较多,很少用C语言来实现对数据库的一些增删查改,记录一下
(1) 头定义:
#include <mysql/mysql.h>
(2)数据库属性
char server[] = "localhost"; //本地 char user[] = "root"; char password[] = "123"; char database[] = "aa"; //数据库名
(3)初始化连接
conn = mysql_init(NULL);
(4)下面就可以开始连接了,安全起见,有错误的话起码要打印个语句出来,并且退出程序
if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0)){ fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); }
(5)连接完成后,就可以开始对数据库进行增删查改的操作了
创建数据表:
char sql1[]="create table if not exists %s (devvarchar(20),timeaa varchar(30),status int(1),power int(1),exception int(1))";
不存在的话就重新创建一个表
赋值语句我使用的是sprintf格式化语句
sprintf(buf,sql1,deveui);
这句代码的意思就是这个deveui以sql1的格式赋值到buf中,buf也是char类型的。
插入数据:
char sql[]="insert into %s values ('%s','%s',%d,%d,%d)";
sprintf赋值也是一样的,按照对应的格式进行赋值就可以了。
最后,得查看一下数据
if(mysql_query(conn,buf)){ fprintf(stderr, "%s\n", mysql_error(conn)); printf("stderor\n"); exit(1); }