c语言字符数组和字符串函数你学会了没?-创新互联

先来学习字符数组

鄠邑网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

定义

char 数组名[元素个数]

例子

char ch[5];

在内存中的表现形式

可以看出定义了但是里面的值是不确定的

现在进行初始化

char ch[5]={'h','e','l','l','o'};

此时内存显示为

如果我们定义了一个数组为char [7],但是不完全初初始化,则后面补\0

char sh[7]=['h','e','l','l','o']

此时在内存中表现为

接下来看字符数组的输入和输出

输入

char ch[10] = "hello";
int i;
for (i = 0; i< 10; i++)
{
	sncaf("%s", &ch[i]); //也可以使用ch[i]=getchar();
}

输出

char ch[10];
int i;
for (i = 0; i< 10; i++)
{
	printf("%c", ch[i]);
}

举个例子练习:输入一串字符全部全换为大写

#includeint main()
{
	char ch[20];  //存放字符
	int i;
	for (i = 0; i< 20; i++)   //循环输入 字符
	{
		ch[i] = getchar();
		if (ch[i] >= 'a' && ch[i]<= 'z')  //每次输入一个字符就进行判断
		{
			ch[i] = ch[i] - 32;   //如果输入的字符不是小写字符,则改变为小写字符
		}
	}
	for (i = 0; i< 20; i++)
	{
		printf("%c", ch[i]);
	}
	return 0;
}

第二部分:字符串

1.字符串的概念个初始化

定义一个字符串

char ch[7]="hello";

等价于

char ch[7]=['h','e','l','l','o','\0','\0']

字符串在内存中的存储和字符数组一样就是结尾会有结束标志\0,也可以用看出结束标志在内存中是占据空间的

char ch1[5] = { 'h','e','l','l','o' };  //占据5个字节
char ch2[] = "hello";   //占据6个字节

输入输出可以用

gets(ch);
scanf("%s", ch);
printf("%s", ch);
puts(ch)

三个函数,这里不再赘述

现在来看字符串的相关函数

首先这些函数包含在string.h头文件中

1.strcat():将两个字符串连接起来

调用格式

strcat(字符数组,字符串);

例子

char ch1[10] = "hello";
char ch2[10] = "world";
strcat(ch1, ch2);
printf("%s", ch2); //helloworld

使用这个函数时,后面一个字符数组的首元素会覆盖前一个的结束标识符,前一个字符数组要足够大,不然会出现越界问题报错,所以前一个字符必须先定义初始化后再使用,后面一个可以是一个字符数组,也可以是一个字符串常量

不用scrcat()函数实现两个字符粗的连接

char str1[20] = "hello";
	char str2[20] = " world"; 
	int i, j,k;
	for (i = 0; str1[i] != '\0'; i++);
	for (j = 0; str2[j] != '\0'; j++);
	for (k = 0; k< j; k++)
	{
		str1[i + k] = str2[k];
	}
	str1[i + k] = 0;
	printf("%s", str1);

2.strncat()再字符串后面追加指定的字符个数

strncat(字符数组,字符串,n);

例如

char str1[10] = "hello";
char str2[10] = "world";
strncat(str1, str2, 2); //输出为hellowo

如果n大于后面以一个字符的长度,则输入完后面一个字符数组的所有字符后补0

不用strncat()函数实现该功能

char ch1[10] = "hello";
	char ch2[10] = "world";
	int i, j, k, n;
	scanf("%d", &n);  //追加的字符个数
	//判断两个字符数组的长度
	for (i = 0; ch1[i] != '\0'; i++);
	for (j = 0; ch2[j] != '\0'; j++);
	//将ch2[]数组中前n个字符追加到ch1中
	for (k = 0; k< n; k++)
	{
		ch1[i + k] = ch2[k];
	}
	//添加结束标识符
	if (n >= j)
	{
		ch1[i + j] = 0;
	}
	else
	{
		ch1[i + k] = 0;
	}

3.strcpy()函数

将字符粗复制到另一个字符数组中字符数组中原有的内容会被覆盖

strcpy(字符数组,字符串)

用别的方式实现的代码为

char str1[20] = "hello";
char str2[20] = "world";
int i, j, k;
for (i = 0; str2[i] != '\0'; i++)
{
	str1[i] = str2[i];
}
str[i] = 0;

4.strncpy()函数:将字符串前n个字符复制到字符数组中

strncpy(字符数组,字符串,n)

char str1[20] = "hello";
char str2[20] = "world";
strncpy(str1, str2, 2); 
str1[3] = 0;

使用别的方式实现代码

char str1[20] = "hello";
char str2[20] = "world";
int n, i;
scanf("%d", &n);
for (i = 0; i< n; i++)
{
	str1[i] = str2[i];
}
str1[i] = 0;

5.strcmp()函数:实现对两个字符串进行比较,a>b返回正,小于返回负数,等于返回0

strcmp(字符串1,字符串2)

实现原理

char str1[20] = "hello";
char str2[20] = "world";
int n, i;
gets(str1); gets(str2);
while (str1[i] != 0 || str2[i] != 0)
{
	if (str1[i] == str2[i])
		continue;
	else
	{
		if (str1[i] >str2[i])
			printf("1");
		    break;
		else
		{
			printf("-1");
			break;
		}
	}
	i++;
}

6.strlen():求字符串实际长度包含\0

strlen(字符串)

7.strlwer():将字符串中的大小字符转换为小写字母

strlwer(字符串)

8.struper():将字符串中的小写字母转换为大写字母

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:c语言字符数组和字符串函数你学会了没?-创新互联
本文URL:http://scyanting.com/article/deccge.html