开发者社区> choice~> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C语言——字符串函数

简介: 字符串函数
+关注继续查看

C语言没有字符串类型,字符串被存放在字符型数组中。C语言规定了一个字符串结束标志,以字符’\0’作为结束符。字符串处理函数包含在<string.h>头文件中,常见的处理字符数组有:


1、字符数组的输入和输出:

scanf(格式控制,地址表列(在变量前加上取地址符&))

和printf(格式控制,输出表列)

gets(字符数组)和puts(字符数组)

int main()

{

    char str[5];  

    //第一种方法:

   scanf_s("%s", str,5);  //scanf_s(格式控制用%s,字符数组名(地址就是字符数组名),缓冲区的大小(表示最多读取5-1个字符))

    printf("%s\n", str);

    //第二种方法:

    gets_s(str, 5);   //get_s(字符数组名,缓冲区的大小)

    puts(str);

    return 0;

}

注意:

两者区别:gets()和puts()函数只能输入和输出一个字符串,不可输出多个,而scanf()和printf()可输入输出多个。如puts(str1,str2);是错误的写法。


2、字符串连接函数:

strcat(字符数组1,字符数组2)

int main(void)

{

    char str1[15] = "hello";  //字符数组1

    char str2[6] = "world";   //字符数组2

    strcat_s(str1, str2);

    printf("%s\n",str1);

    return 0;

}

注意:

1、字符串2连接到字符串1的后面,将连接后的结果放在字符数组1中,最后得到字符数组1的地址;

2、两个字符串后面均有结束符’\0’,在连接时字符串1后面的结束符会被取消,只在新串最后保留结束符。


3、字符串复制函数:

strcpy(字符数组1,字符数串2或者字符数组名)

strncpy(字符数组1,字符串2或者字符数组名,n)

int main(void)

{

    char str1[15];

    char str2[6] = "world";

    strcpy_s(str1, str2);//将str2字符数组复制到str1中,str1的容量必须比str2大

    printf("%s\n",str1);

    strncpy_s(str1, str2, 3);//将前3个字符复制到str1中

    puts(str1);

    return 0;

}

image

注意:

1、若开始没有对字符数组1进行初始化或者复制,str1中的内容是无法预知的,复制时str2将内容和结束符一起复制到str1中,而此时str1字符数组结束符后面的剩余空间的字节内容不一定是’\0’;

2、不能用赋值语句将字符串常量或者字符数组直接赋值给字符数组,如str1=“world”;这写法是错误的,必须要用strcpy()函数,用赋值语句将一个字符赋值给字符型变量或者字符数组是可以的。


4、字符串比较函数:

strcmp(字符串1或者字符数组,字符数串2或者字符数组)

int main(void)

{

    char str1[15]="hello";

    char str2[6] = "world";

    printf("%d\n",strcmp(str1,str2));

    return 0;

}

image

注意:

1、两个字符串从左到右按照 ACSII 码值大小比较,直到出现不同的字符或者遇到’\0’为止;

2、若出现不相同的字符,则以第一对不相同的字符的比较结果为准;

3、字符串1等于字符串2,函数值为0,字符串1大于字符串2,函数值为正整数,字符串1小于字符串2,函数值为负整数;

4、两个字符串不能直接用str1>str2这种方式比较,必须用strcmp()函数。


5、字符串长度函数:

strlen(字符串或者字符数组)

int main(void)

{

    char str[15]="hello";

    printf("%d\n",strlen(str));

    return 0;

}

image

注意:

1、strlen()函数在测试字符串长度时不包括结束符;

2、为了测试字符串的实际长度,C语言规定了一个字符串结束标志,以字符’\0’作为结束标志,因此上述程序中虽然字符数组大小为15,但是程序运行结果为5,因为碰到’\0’自动结束。


6、字符串转换大小写函数:

大写转小写:strlwr(字符数组)

小写转大写:strupr(字符数组)

int main(void)

{

    char str[15] = "Hello";

    _strlwr_s(str,6);//第一个参数传一个char类型的指针,可以传一个数组,第二个参数传入strlen(str) + 1

    puts(str);

    _strupr_s(str, 6);

    printf("%s\n",str);

    return 0;

}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C语言进阶——字符函数和字符串函数
C语言进阶——字符函数和字符串函数
7 0
【C】C语言风格字符串注意点
【C】C语言风格字符串注意点
24 0
C语言-字符串处理
C语言-字符串处理
22 0
C语言字符串拷贝
#include "stdafx.h"using namespace std;/*  * 说明:字符串拷贝版本1  * 参数:dest目标地址,src源地址  * 返回:返回拷贝好的地址;如果出错或者有重叠,无定义  * 异常:可能出现字符串溢出,及dest所占空间不如src所占空间大。
663 0
c语言字符串操作大全
不错 函数名: stpcpy 功  能: 拷贝一个字符串到另一个 用  法: char *stpcpy(char *destin, char *source); 程序例: #include #include int main(void) {    char string...
681 0
C语言字符串函数大全
C语言字符串函数大全 作者:      来源:zz     发表时间:2006-10-29     浏览次数: 787704      字号:大  中  小 函数名: stpcpy 功  能: 拷贝一个字符串到另一个 用  法: char *stpcpy(char ...
582 0
+关注
choice~
努力
100
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载