字符串的相关案例和string库函数的使用

字符串的存储特性:在存储过程中字符串都会在末尾自动添加一个结尾标志符\0

                                 来表示字符串结束

字符串的定义方式有两种:

方式一:

利用字符数组 + 双引号的方式定义字符串

例如: char str[4] = abc;

注意: 这里的数组长度要么不写,要么要在字符串的长度上加1

       因为字符串在存储中会有一个结尾标识符\0所以要加1

方式二:

利用指针 +双引号的方式定义字符串

例如: char* str = abc;

注意: 这种定义方式会将所存储的变量放入只读常量区;

只读常量区特点:1:内容不可以修改

                             2:里面的内容可以复用

例如:再创建一个 char* str1 = abc;   

只读常量区会优先判断该区内是否有相同的内容已经存在,因为和str一样都是存入只读常量区且内容一样,所以str1的地址和str的地址同一个并不会生成一个新的地址

案例1:

键盘录入一个字符串,并遍历出来
 

#include<stdio.h>


int main() {

	char str[100];
	printf("请输入一个字符串:");
	scanf("%s", str);
	printf("输入的字符串为:%s\n",str);

	//遍历字符串
	//创建一个字符指针
	char* p = str;
	//再根据字符串的性质结尾标志符为\0所以使用while循环
	
	while (1) {
		char c = *p;
		if (c == '\0') {
			break;
		}
		printf("%c\n", c);
		p++;
	}
}

案例2:

定义一个数组存储5个学生的名字并进行遍历

#include<stdio.h>



int main() {
	//方法一
	//即要将多个字符数组存入一个数组中
	//所以要创建一个二维数组

	char str[5][100] = {
		"zhangsan",
		"wangwu",
		"xaioming",
		"lihua",
		"wangqiang"
	};
	//通过循环将其遍历
	
	for (int i = 0; i < 5; i++) {
		//char* p = str[i];
		printf("%s\n", str[i]);
	}
}

#include<stdio.h>

  //方法二
	int main() {
		//定义一个数组指针存放5个名字字符串的指针
		char* p[5] = {

			"zhangsan",
			 "wangwu",
			 "xaioming",
			  "lihua",
			 "wangqiang"
		};
		for (int i = 0; i < 5; i++) {
			char* p1 = p[i];
				printf("%s\n", p[i]);
			}
	}

string的相关函数的使用:

strlen:获取字符串长度

strcat:拼接两个字符串

strcpy:复制字符串

strcmp:比较两个字符串

strlwr:将字符串变成小写

strupr:将字符串变成大写

注意:在一些编译器中 strlwr 和 strupr  两个函数可能被淘汰了,

      如要使用其对应的功能可以使用  _strlwr  和  _strupr

案例1:

用户登录判断

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

int main() {

	//先确定用户的账号和密码
	char* passwd = "zhangsan";
	char* mima = "123456";

	//键盘输入账号和密码
	char passwd1[100];
	printf("请输入账号:\n");
	scanf("%s", passwd1);
	
	char mima1[100];
	printf("请输入密码:\n");
	scanf("%s", mima1);
	
	//判断输入的信息是否和设置的信息一致
	if (!strcmp(passwd1, passwd) && !strcmp(mima1, mima)) {
		//若两个数相同strcmp则返回0
		printf("登陆成功!\n");
	}

	else {
		printf("登陆失败!\n");
	}
}

案例2:

 统计键盘输入的字符串中有多少个大写,小写,和数字

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

int main() {

	printf("请输入一个字符串\n");
	char str[100];
	scanf("%s", str);

	int num1 = 0; //统计大写个数
	int num2 = 0; //统计小写个数
	int num3 = 0; //统计数字个数

	for (int i = 0; i < strlen(str); i++) {
		
		if (str[i] >= 'A' && str[i] <= 'Z') {
			num1++;
		}
		else if (str[i] >= 'a' && str[i] <= 'z') {
			num2++;
		}
		else {
			num3++;
		}
	}
	printf("大写有%d个\n", num1);
	printf("小写有%d个\n", num2);
	printf("数字有%d个\n", num3);
}

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值