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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM