C语言 ---- 字符串

1.什么是字符串

字符串是由数字、字母、标点符号组成的一串字符,在C语言中,字符串没有专属的数据类型,而是基于字符类型进行表示的,他的存储分为内存存储与数组存储两种形式。

(1)内存存储

内存存储是指用指针给出字符串首元素的地址,而后连续的内存空间中为字符串

字符串"abc"的长度为4。因为在"abc"后还存在"\0"作为结束标志,"\0"占一字节

(2)数组存储:字符数组

数组存储是指将字符串保存在数组中

!!!注意数组定义的大小要考虑"\0"的位置!!!

2.字符串的赋值

字符串的赋值可以有两种方式

#include<stdio.h>
#include<string.h>

void main()
{
	char arr[4] = { 'a','b','c'};
	char brr[4] = { "abc" };
	printf("字符串的长度:%ld\n字符串的长度:%ld", sizeof(arr),sizeof(brr));
}

第一种是对字符数组的每一个单元赋值

第二种是直接对字符数组整体赋值

二者的结果是一样的

3.字符串操作函数 --- str系列函数

!!!str系列函数都包含在"string.h"头文件中

(1)字符串长度:strlen

!!!sizeof和strlen不同!!! strlen输出的字符串长度不包括"\0"

#include<stdio.h>
#include<string.h>

int main()
{
	char arr[] = "Hello World!";
	int length = strlen(arr);
	printf("字符串长度:%d", length);
}

(2)字符串链接:strcat

strcat函数用于追加字符串。它接受两个字符串作为参数,把第二个字符串复制一份添加到第一个字符串的末尾。这个函数会改变第一个字符串,但是第二个字符串不变。

#include<stdio.h>
#include<string.h>

int main()
{
	char arr[] = "Hello";
	char brr[] = " World!";
	char *crr = strcat(arr, brr);
	printf("字符串为:%s", crr);
}

(3)字符串比较:strcmp、strncmp

strcmp函数按照字典顺序比较两个字符串的大小。

#include<stdio.h>
#include<string.h>

int main()
{
	char arr[] = "Hello";
	char brr[] = "World";
	int result = strcmp(arr, brr);
	if (1 == result)
		printf("result true:%d", result);
	else
		printf("result err:%d", result);
	return 0;
}

strncmp函数按照字典顺序比较指定位数的字符串的大小

#include<stdio.h>
#include<string.h>

int main()
{
	char arr[] = "Hello";
	char brr[] = "Hello World";
	int result = strncmp(arr, brr, 5);
	if (1 == result)
		printf("result true:%d", result);
	else
		printf("result err:%d", result);
	return 0;
}

(4)字符串复制:strcpy、strncpy

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

int main()
{
	char arr[] = "abc";
	char brr[40] = { 0 };
	printf("arr: %s\nbrr: %s\n", arr, brr);
	strcpy(brr,arr);
	printf("arr: %s\nbrr: %s\n", arr,brr);
	return 0;
}

strncpy函数用于指定位数的字符串的复制。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

int main()
{
	char arr[] = "abc";
	char brr[40] = { 0 };
	strncpy(brr, arr, 1);
	printf("arr: %s\nbrr: %s\n", arr, brr);
	return 0;
}

(5)字符串分割:strtok

strtok函数用于字符串的分割

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

int main()
{
	char arr[] = "aaa bbb ccc";
	char brr[2] = " ";
	char* crr = strtok(arr, brr);
	while (NULL != crr)
	{
		printf("%s\n", crr);
		crr = strtok(NULL, brr);
	}
	return 0;
}

(6)字符串查找:strstr

strstr函数用于字符串str1中查找是否含有字符串str2,如果存在,返回str2在str1中第一次出现的地址;否则返回NULL

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

int main()
{
	char arr[] = "abcdef";
	char brr[] = "bc";
	char* crr = strstr(arr, brr);
	printf("%s\n", crr);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值