首页 > 编程知识 正文

c语言嵌入式系统编程教程(学好c语言嵌入式)

时间:2023-05-06 08:53:13 阅读:91186 作者:4735

本文在嵌入式Linux开发《C语言专题(五:(3)函数之字符串函数1)》中简要介绍了c语言的字符串函数。 在两篇文章中详细介绍了字符串函数(strlen、strcpy、strncpy、strcat、strncat、strcmp、strcasecmp、strncasecmp、strchr和strchr )

在此期间,在项目中获取网站的信息,并从其中提取适当的地理位置信息用于字符串操作函数。 其实,无论是嵌入式开发还是Java、JavaWEB开发,字符串操作函数都很常见,所以必须学习字符串函数的使用方法。 在ubuntu、fedora等Linux分发系统中,可以通过man 3 xxx (字符串名称)调查c语言字符串函数的详细使用方法。

在实际开发中使用这些字符串函数时,请务必记住包含相应的头文件#include string.h。 如果未添加,则warning : incompatibleimplicitdeclarationofbuilt-in function‘XXX’[ enabledbydefault ] XXX会显示一条消息,指出它是函数名称

(1) strlen )字符串长度函数

函数名称: strlen

函数原型: size _ t strlen (常数符号* s );

功能:计算字符串长度的函数

返回值:字符串长度

说明:计算的长度不包含字符串结束标志0个字符

代码演示:

# #包括stdio.h

//必须附加字符串操作头文件

# #包含字符串. h

//演示字符串的长度操作

int main (英特尔航空(英特尔航空* *航空) ) ) ) ) ) ) ) ) ) ) )。

{

char *str='hello world ';

//执行结果:字符串hello world的长度为: 11

printf (字符串hello world的长度为%d n )、字符串(str );

返回0;

}

(2) strcpy )字符串复制函数

函数名称: strcpy

函数原型: char*strcpy(char*dest,常数符号* src );

功能:源字符串src (不是将结束标志(包括0 )复制到目标字符串dest )的字符串常数) ) ) ) ) ) ) ) ) ) ) ) )。

返回值:所需的字符串指针

说明:如果目标字符串的长度比源字符串短,则不能将源字符串的内容完全复制到目标字符串。 如果目标字符串以前有内容,它将被完全复盖。 其余未完全复制的字符串将复盖存储在原始目标字符串后面的内存值,如果更改这些值,代码可能会异常发生。 因此,由于此函数存在使用缺陷,开发人员在使用此函数时,必须确保目标字符串的长度足够存储源字符串。

代码演示:

# #包括stdio.h

//必须附加字符串操作头文件

# #包含字符串. h

//演示字符串的复制操作

int main (英特尔航空(英特尔航空* *航空) ) ) ) ) ) ) ) ) ) ) )。

{

Char * SRC=' Hello世界';

Char Dest [ 20 ]=;

//执行结果:字符串复制操作: hello world

printf (字符串复制操作: %s n ),条形) dest,src );

返回0;

}

(3) strncpy )字符串复制函数

函数名称: strncpy

函数原型: char*strncpy(char*dest,常数char * src,大小_ t n );

功能:与strcpy类似,但经常将源字符串src中的n个字符分配给目标字符串dest。

返回值:所需的字符串指针

说明:如果源字符串的长度小于n,则后续字符串由补充。 如果大小较大,则仅将n个字符复制到dest,并且结果不会以结束。 也就是说,还需要进行dest[n-1]=' '或dest[n]=' '的操作。 因此,对于开发者来说,最好源字符串的长度大于n,同时目标字符串的空间至少容纳n个字节。

代码演示:

# #包括stdio.h

//必须附加字符串操作头文件

# #包含字符串. h

//演示字符串的n字节复制操作

int main (英特尔航空(英特尔航空* *航空) ) ) ) ) ) ) ) ) ) ) )。

{

Char * SRC=' Hello世界';

Char Dest [ 20 ]=;

//执行结果:字符串复制5字节操作: hello

printf ('字符串复制5字节操作: %s n ',strncpy ) dest,src,5 );

返回0;

}

(4)strcat:字符串连接函数

函数名:strcat

函数原型: char *strcat(char *dest, const char *src);

功能:将源字符串src直接连接到目的字符串dest的后面并且自动添加一个字符串结束标志符。

返回值:目的字符串指针

说明:字符串连接函数的2种形式与字符串复制函数很类似。和strcpy一样,开发者必须保证目的字符串的空间必须足够容纳源字符串。

代码演示:

#include <stdio.h> //一定要加上字符串操作头文件 #include <string.h> //演示字符串连接操作 int main(int argc, char** argv) { char *src = " world"; char dest[20] = {"hello"}; //运行结果:字符串连接操作:hello world printf("字符串连接操作:%s n", strcat(dest, src)); return 0; }

(5)strncat:字符串连接函数

函数名:strncat

函数原型:char *strncat(char *dest, const char *src, size_t n);

功能:与strcat类似,也是把一个字符串连接到另外一个字符串的后面,只不过是将从源字符串src地址开始的n个字节连接到目的字符串中。

返回值:目的字符串的指针

说明:如果源字符串src容纳至少n个字节,那么src将要写n+1个字节(n个有效字节加上结束标志符)到目的字符串dest中因此目的字符串的长度至少是 strlen(dest)+n+1。

代码演示:

#include <stdio.h> //一定要加上字符串操作头文件 #include <string.h> //演示字符串连接4个字节操作 int main(int argc, char** argv) { char *src = " world"; char dest[20] = {"hello"}; //运行结果:字符串连接4个字节操作:hello wor printf("字符串连接4个字节操作:%s n", strncat(dest, src, 4)); return 0; }

(6)strcmp:字符串比较函数

函数名:strcmp

函数原型:int strcmp(const char *s1, const char *s2);

功能:比较字符串s1和s2的大小

返回值:如果比较结束都一样,那么这2个字符串相等。如果s1小于s2则比较的结果小于0,如果s1大于s2则比较的结果大于0,如果s1等于s2则比较的结果等于0,所以可以将比较的结果与0比较来判断2个字符串的大小。

说明:比较的方法是对2个字符串中的字符逐个进行比较,直到遇到不匹配(也就是要么大于要么小于)情况就结束。

代码演示:

#include <stdio.h> //一定要加上字符串操作头文件 #include <string.h> //演示字符串比较操作 int main(int argc, char** argv) { char *src = "aa"; char *dest = "ab"; int n = strcmp(src, dest); //运行结果:字符串比较aa小于ab if (n == 0) { printf("字符串比较aa等于ab n"); } else if(n > 0) { printf("字符串比较aa大于ab n"); } else { printf("字符串比较aa小于ab n"); } return 0; }

(7)strncmp:字符串比较函数

函数名:strncmp

函数原型:int strncmp(const char *s1, const char *s2, size_t n);

功能:与strcmp类似,只不过它是比较字符串s1和字符串s2的前n个字节的大小

返回值:与strcmp类似

说明:比较的方法是对2个字符串中前n个字符逐个进行比较,直到遇到不匹配(也就是要么大于要么小于)情况就结束。

代码演示:

#include <stdio.h> //一定要加上字符串操作头文件 #include <string.h> //演示字符串比较1个字节操作 int main(int argc, char** argv) { char *src = "aa"; char *dest = "ab"; int n = strncmp(src, dest, 1); //运行结果:字符串比较aa和ab第一个字符相等 if (n == 0) { printf("字符串比较aa和ab第一个字符相等n"); } else if(n > 0) { printf("字符串比较aa第一个字符大于ab第一个字符 n"); } else { printf("字符串比较aa第一个字符小于ab第一个字符 n"); } return 0; }

未完待续,后续继续更新字符串函数具体用法...

更多精彩内容可以关注此头条号:嵌入式软硬件开发 喜欢的话大家可以“评论”,“转发”、“点赞”或者“收藏”,感谢大家。相互交流,共同成长。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。