chardes[]="Hello,iam!";
charsource[]="abcdefg";
strncpy(chardes,charsource,3);
这时chardes的值是abc 注意这里可不是把abc添加在!后面的,是从chardes这个数组的首地址开始赋值的,最后会加上' '做结束符
字符串转int atoi
函数原型int atoi(const char *nptr);
int val = atoi("12");
这样va就l等于12
int转字符串 itoa
函数原型:char*itoa(intvalue,char*string,intradix);
int number=123456;
char string[25];
itoa(number,string,10);
string就是123456 后面的10是说转化成10进制 16就是转化成16进制 8就是转化成8进制 ,也可以转化成2进制
字符串截取 strncpy
原型:char*strncpy(char*dest,char*src,size_tnum);
大家知道strcpy 是子环节复制字符串,可能不知道还有个strncpy,这是复制指定长度的字符串
chardes[]="Hello,iam!";
charsource[]="abcdefg";
strncpy(chardes,charsource,3);
这时chardes的值是abc 注意这里可不是把abc添加在!后面的,是从chardes这个数组的首地址开始赋值的,最后会加上' '做结束符。
改变一下用法
strncpy(chardes+1,charsource+2,3);
这时候chardes的值是Hcde 为什么是这个值,能看懂不?自己思考一下。偏移哈。
字符串构造 sprintf
原型 int sprintf( char *buffer, const char *format, [ argument] … );
这个应该很多人都知道。
char dest[20];
int val=12;
sprintf(dest,"val=%d",val);
dest的值就是"val=12" 那个12也是字符串了哈注意下。
这个函数也可以整形、浮点型转字符串
sprintf(dest,"%f",3.1415926f);
dest 就是“3.1415926”
sprintf(dest,"现在的时间是%s,请注意","2014-04-09 11:27:21"); 后面这个字符串也可以换成变量
dest的值是 "现在的时间是2014-04-09 11:27:21,请注意"
直接对内存操作memset
原型 void *memset(void *s, int ch, size_t n);
char buffer[20];
strcpy(buffer,"1234567890");
memset(buffer,0,sizeof(char)*20);
这时buffer中的数据全都是0了
strcpy(buffer,"1234567890");
memset(buffer+2,6,sizeof(char)*2);
这时buffer值是1266567890
这个函数可以对任何数据类型的内存进行修改。所以有些从串口接收进来的数据需要做一下简单的修改再转发出去的话就可以用这个函数做修改。
先介绍这些吧,再想起来别的再补充
memcpy函数使用起来也不错的,直接把字节数组复制到指定位置了,这个就不说了。
字符串分割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() 函数搜索一个字符串在另一个字符串中的第一次出现。
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否则会出错