c语言:4、数组与字符串

本文介绍了C语言中如何通过数组定义字符串,并探讨了两种定义方式。详细阐述了字符串函数strlen、strcmp、strcpy和strcat的用法及注意事项,通过实例展示了它们的功能。此外,还讲解了字符串比较和拷贝的原理。
摘要由CSDN通过智能技术生成

1、简介

字符串是由多个字符组成的一段话。

在c语言中,是没有办法直接定义字符串数据类型的,但是可以使用数组来定义我们需要的字符串。

一般有下方两种定义形式:

//1、定义方式1
char 字符串名字[长度] = "字符串值";

//2、定义方式2
char 字符串名称[长度] = {'字符1','字符2',...'字符n','\0'};

注意:

  1. []中的长度可以省略
  2. 采用第二种方式时,最后一个元素必须是’\0’,’\0’表示字符串的结束标志;
  3. 采用第二种方式的时候,数组中不能写中文

在输出字符串的时候要使用:printf("%s", 字符数组名字);或者puts(“字符数组名字”)

#include <stdio.h>
int main()
{
	//字符串定义方式1
	char string1[] = "我爱中国!";
	//字符串定义方式2
	char string2[] = {'h', 'e', 'l', 'l','o', '\0'};
	//输出两段字符串
	printf("%s\n", string1);
	printf("%s\n", string2);
	return 0;
}

2、例子

#include <stdio.h>
void say(char string[])
{
	printf("%s\n", string);
}
int main()
{
	char string1[] = "我爱中国!";
	char string2[] = {'h','e','l','l','o','\0'};
	say(string1);
	say(string2);
	return 0;
}

3、字符串函数

常用的字符串函数如下:
在这里插入图片描述

strlen( stringName)

strlen()获取字符串长度时\0是不包括进去的,且汉字与字母长度不一样

char str1[] = "你好呀";
char str2[] = {'h','e','l','l','o','\0'};
int len1 = strlen(str1);
int len2 = strlen(str2);
printf("str1的长度为:%d\n", len1);
printf("str2的长度为:%d\n", len2);

在这里插入图片描述

strcmp( stringName1, stringName2)

strcmp()在比较的时候回把字符串转成ASCII码再进行比较,
返回0表示s1和s2的ASCII码相等;
返回正数表示s1比s2的ASCII码大;
返回负数表示s1比s2的ASCII码小;

char str1[] = "a";
char str2[] = "b";
char str3[] = "c";
printf("a的ASCII码为:%d\n", 'a');
printf("b的ASCII码为:%d\n", 'b');
printf("c的ASCII码为:%d\n", 'c');
printf("str1与str2的比较结果为:%d\n", strcmp(str1, str2));
printf("str2与str3的比较结果为:%d\n", strcmp(str2, str3));
printf("str1与str3的比较结果为:%d\n", strcmp(str1, str3));

本质上应该是把str1的ASCII码减去str2的ASCII码
在这里插入图片描述

strcpy( stringName, stringValue)

strcpy()拷贝后,会将stringValue的值覆盖stringName,且不能对字符串常量进行拷贝

#include <stdio.h>
#include <string.h>
#define PI "imooc"
int main()
{
	char str[] = "慕课网";
	strcpy(str, "I love imooc");
	printf("%s\n", str);//输出:I love imooc

	//下方代码没有运行结果
	//strcpy(PI, "hello");
	//printf("%s\n", PI);
	return 0;
}

在这里插入图片描述

strcat(string1, string2)

strcat()在使用时string1要有足够的空间来容纳要拼接的字符串

char s1[10] = "hello ";
char s2[] = "world";
strcat(s1, s2);
printf("%s\n", s1);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值