專注電子技術(shù)學(xué)習(xí)與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

單片機c語言字符串操作

作者:huqin   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年04月25日   【字體:

 字符串轉(zhuǎn)int atoi

函數(shù)原型int atoi(const char *nptr);
int val = atoi("12");
這樣va就l等于12

int轉(zhuǎn)字符串 itoa
函數(shù)原型:char*itoa(intvalue,char*string,intradix);
int number=123456;
char string[25];
itoa(number,string,10);
string就是123456 后面的10是說轉(zhuǎn)化成10進制 16就是轉(zhuǎn)化成16進制 8就是轉(zhuǎn)化成8進制 ,也可以轉(zhuǎn)化成2進制

字符串截取 strncpy
原型:char*strncpy(char*dest,char*src,size_tnum);
大家知道strcpy 是子環(huán)節(jié)復(fù)制字符串,可能不知道還有個strncpy,這是復(fù)制指定長度的字符串
chardes[]="Hello,iam!";
charsource[]="abcdefg";
strncpy(chardes,charsource,3);
這時chardes的值是abc 注意這里可不是把abc添加在!后面的,是從chardes這個數(shù)組的首地址開始賦值的,最后會加上'\0'做結(jié)束符。
改變一下用法
strncpy(chardes+1,charsource+2,3);
這時候chardes的值是Hcde 為什么是這個值,能看懂不?自己思考一下。偏移哈。

字符串構(gòu)造 sprintf
原型 int sprintf( char *buffer, const char *format, [ argument] … );
這個應(yīng)該很多人都知道。
char dest[20];
int val=12;
sprintf(dest,"val=%d",val);

dest的值就是"val=12" 那個12也是字符串了哈注意下。
這個函數(shù)也可以整形、浮點型轉(zhuǎn)字符串
sprintf(dest,"%f",3.1415926f);
dest 就是“3.1415926”

sprintf(dest,"現(xiàn)在的時間是%s,請注意","2014-04-09 11:27:21"); 后面這個字符串也可以換成變量
dest的值是 "現(xiàn)在的時間是2014-04-09 11:27:21,請注意"

直接對內(nèi)存操作memset
原型 void *memset(void *s, int ch, size_t n);
char buffer[20];
strcpy(buffer,"1234567890");
memset(buffer,0,sizeof(char)*20);
這時buffer中的數(shù)據(jù)全都是0了

strcpy(buffer,"1234567890");
memset(buffer+2,6,sizeof(char)*2);
這時buffer值是1266567890
這個函數(shù)可以對任何數(shù)據(jù)類型的內(nèi)存進行修改。所以有些從串口接收進來的數(shù)據(jù)需要做一下簡單的修改再轉(zhuǎn)發(fā)出去的話就可以用這個函數(shù)做修改。

先介紹這些吧,再想起來別的再補充
【2014-04-11 補】

memcpy函數(shù)使用起來也不錯的,直接把字節(jié)數(shù)組復(fù)制到指定位置了,這個就不說了。

字符串分割strtok
原型 char *strtok(char s[], const char *delim);
分解字符串為一組字符串。s為要分解的字符串,delim為分隔符字符串。
ARDUINO 代碼

 
輸出:
abc
d

記住了,只要第一次分割的時候需要指定字符串,之后再分割就用NULL就行了,當p==NULL的時候說明分割完了。這里使用到了指針,此處指針不需要釋放。


查找字符串 strstr
原型 char *strstr(const char *str1, const char *str2);
strstr() 函數(shù)搜索一個字符串在另一個字符串中的第一次出現(xiàn)。
str1: 被查找目標 
str2: 要查找對象 

char str[]="1234 xyz";
char* str1=strstr(str,"34");
printf("%s",str1);
顯示: 34 xyz

字符串比較 strcmp
原型:extern int strcmp(const char *s1,const char * s2);
比較s1和s2 兩個相等就返回0 不想等就返回非0值。

字符串連接strcat
原型 extern char *strcat(char *dest,char *src);
把src 連接到dest值的后面,注意dest要有足夠的空間去接收src否則會出錯

關(guān)閉窗口

相關(guān)文章