目录
1. strcmp 比较两个字符串并根据比较结果返回整数
2. memcpy 拷贝内存块到目标空间
3. strcpy 把从src地址开始且含有’\0’结束符的字符串复制到以dest开始的地址空间
4. strcat 实现字符串的拼接
5. atof 把字符串转换成浮点数
6. strlen 它从内存的某个位置开始扫描,直到碰到第一个字符串它从内存的某个位置开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
7 . rint 四舍五入至整数值
1.1 释意
string compare(字符串比较的缩写),用于比较两个字符串并根据比较结果返回整数;
语法结构为【int strcmp(char *str1, char *str2)】,比较字符串str1和str2是否相同,如果相同则返回0,如果不同,在不同的字符处如果str1的字符大于str2字符,则返回负1。
1.2 简单举例:
比如:char a[]="abcd";
char *b="abcd";
char *d="abcde";
int d=strcmp(a,b); //那么d的值是0
d=strcmp(b,d); //d的值是-1 因为 '\0' 比'e' 小
d=strcmp(d,b); //d的值是1,因为 'e' 比'\0'大
1.3 工程举例:
memcpy(buffer,UART7_RX_BUF,len);
if(strcmp(buffer,"APC")==0)
{
if(ucEdfaPumpSetMode==0)return 0; //正确返回
}
else if(strcmp(buffer,"ACC")==0)
{
if(ucEdfaPumpSetMode==1)return 0; //正确返回
}
return 2;//返回错误
2.1 释意
C语言:#include
C++:#include
memory copy(拷贝内存块到目标空间);
void *memcpy( void *dest, const void *src, size_t count );
参数 | dest | src | count |
解析 | 目标空间地址 | 要拷贝内容空间源地址 | 拷贝内容字节数 |
memcpy函数不像strncpy函数一样只能拷贝字符,memcpy函数可以拷贝任意类型的内容。
如果拷贝在内容超过目的空间大小,那么就会溢出 编译器会报出警告;在使用memcpy时避免内存重叠的情况
3.1 释意
头文件:#include
C++:#include
strcpy,即string copy(字符串复制)的缩写。
原型声明:char *strcpy(char* dest, const char *src);
strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有’\0’结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*。
3.2 工程举例:
if(ucEdfaPumpSetMode==0)strcpy(strSet,"APC");//strcpy(a,b),是把字符串b复制到a
3.2. strcpy和memcpy的区别
strcpy和memcpy主要有以下3方面的区别。
1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
C库函数strcat()函数的功能是实现字符串的拼接。其函数原型如下所示:
char *strcat(char *dest, const char *src)
4.1 工程举例:
void sendEdfaCmd(char* cmd)
{
u8 len=0;
strcpy((char*)strCmd,cmd); //将CMD复制到数组中
//设置
if(strcmp(cmd,CMD_SET_PUMP_MODE)==0)//strcmp是个比较函数,用法就是a>b返回1,a
可以用strcat来对当前字符的末尾进行添加字符串。
C语言:
atof()是C 语言标准库中的一个字符串处理函数,功能是把字符串转换成浮点数。该函数名是 “ascii to floating point numbers” 的缩写。语法格式为:double atof(const char *nptr)。
举例说明:
int main()
{
double d;
char str[] = "123.456";
d=atof(str);
printf("string=%sdouble=%lf\n",str,d);
return 0;
}
C语言:#include
C++:#include
strlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义了一个字符型数组但没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
举例:
#include
#include
using namespace std;
int main(void)
{
char aa[200]="Hello, World!";
cout<
strlen和sizeof的区别:
我们能常在用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度
char str[20000]="0123456789";
int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。
int b=sizeof(str); //而b=20000; >>>> sizeof 计算的则是分配的数组 str[20000] 所占的内存空间的大小,不受里面存储的内容改变。
四舍五入至整数值
#include /* printf */
#include /* rint */
函数原型:
double rint (double x);
float rintf (float x);
举例说明:
return (int16_t)rint(power*10);
printf ( "rint (2.3) = %.1f\n", rint(2.3) );
printf ( "rint (3.8) = %.1f\n", rint(3.8) );
printf ( "rint (-2.3) = %.1f\n", rint(-2.3) );
printf ( "rint (-3.8) = %.1f\n", rint(-3.8) );
rint (2.3) = 2.0
rint (3.8) = 4.0
rint (-2.3) = -2.0
rint (-3.8) = -4.0