【C语言】常用的字符串处理函数

目录

1. strcmp        比较两个字符串并根据比较结果返回整数

2. memcpy        拷贝内存块到目标空间

3. strcpy        把从src地址开始且含有’\0’结束符的字符串复制到以dest开始的地址空间

4. strcat        实现字符串的拼接

5. atof        把字符串转换成浮点数

6. strlen         它从内存的某个位置开始扫描,直到碰到第一个字符串它从内存的某个位置开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。结束符'\0'为止,然后返回计数器值(长度不包含'\0')。

7 . rint        四舍五入至整数值


1. strcmp

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. memcpy

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. strcpy

3.1 释意

头文件:#include 和 #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

4. strcat

C库函数strcat()函数的功能是实现字符串的拼接。其函数原型如下所示:

char *strcat(char *dest, const char *src)
  •   dest:指向目标数组,该目标包含看一个C字符串,且足够容纳追加之后的字符串。
  •        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来对当前字符的末尾进行添加字符串。

5. atof

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

6. strlen

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] 所占的内存空间的大小,不受里面存储的内容改变。

7 . rint

四舍五入至整数值

#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

你可能感兴趣的:(C语言笔记,c语言,开发语言)