字符串的存储特性:在存储过程中字符串都会在末尾自动添加一个结尾标志符\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);
}
标签:string,int,char,str,printf,字符串,include,库函数 From: https://blog.csdn.net/2401_83720143/article/details/140672666