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);
     }

 

posted on 2018-08-16 19:05  iotli  阅读(30073)  评论(0编辑  收藏  举报

导航