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