字符串
第一种定义
利用字符数组 +双引号的方式定义字符串
char str1[4]="abc";
printf("%s\n",str1);
细节1:
在底层,实际存储的时候,c语言还是会帮我们把字符串"abc"转换成字符数组进行保存,并且在末尾还要再加上'\0‘
{'a','b','c','\0'};
细节2:
数组的长度,要么不写,如果要写的话,记得要把结束标记的空间给预留出来
细节3:
字符数组 +双引号的方式定义字符串,内容是可以发生改变的
第二种定义
利用指针 +双引号的方式定义字符串
char* str2 = "abc";
printf("%s\n",str2);
细节1:
在底层,实际存储的时候,c语言还是会帮我们把字符串"abcd"转换成字符数组进行保存,并且在末尾还要再加上'\0'
{'a','b','c','d','\0‘};
细节2:
利用指针 +双引号的方式定义字符串,会把底层的字符数组放在只读常量区
只读常量区特点:
内容不可以修改的
里面定义的字符串是可以复用的
复用就是在定义时会查找在只读常量区内有没有这个字符串,若有则复用
键盘录入字符串并遍历
#include<stdio.h>
int main()
{
//因为要键盘录入键盘录入,所以不可以用指针定义字符串
char str[100];
//定义一个指针p来接收str的地址
char* p = str;
printf("请输入一段字符串(长度小于100):");
scanf("%s",str);
printf("录入的字符串为:%s\n",str);
//循环判断str内的每一个字符
while(1)
{
//定义变量c来接收p中的元素
//数组的地址其实就是数组中第一个元素的地址
char c = *p;
//当c等于结束符时说明字符串已经遍历完成
if(c == '\0')
{
//跳出循环
break;
}
//打印当前元素
printf("%c\n",c);
//指针 p 向后移动一个位置,指向下一个字符
p++;
}
return 0;
}
遍历姓名
#include<stdio.h>
int main()
{
//方法一:定义一个二维数组来存放5人的名字
/*char strArr[5][10] = {"张三","李四","王五","马六","徐七"};
int i;
for(i=0;i<5;i++)
{
printf("%s\n",strArr[i]);
}*/
//方法二:定义一个指针数组来存放5人的名字
char* p[5] = {"张三","李四","王五","马六","徐七"};
int i;
for(i=0;i<5;i++)
{
printf("%s\n",p[i]);
}
return 0;
}
string常用函数
使用函数需要导入头文件
#include<string.h>
strlen:获取字符串的长度
统计长度时不计算结束符,且中文占2字节
strcat:拼接两个字符串
细节1:把第二个字符串中全部的内容,拷贝到第一个字符串的未尾,第二个字符串不修改 前提1:第一个字符串是可以被修政的 前提2:第一个字符串中剩余的空间可以容纳拼接的字符串
strcpy:复制字符串
细节1:把第二个字符串中全部的内容,拷贝到第一个字符串中,把第一个字符串里面原有的内容给覆盖了 前提1:第一个字符串是可以被修改的 前提2:第一个字符串中空间可以容纳第二个字符串的完整内容
strcmp:比较两个字符串
顺序内容完全 一样返回0,不一样返回非0
strlwr:将字符串变成小写
只可以修改英文大小写
strupr:将字符串变成大写
只可以修改英文大小写
示例代码
#include<stdio.h>
#include<string.h>
int main()
{
char* str1 = "abc";
char str2[100] = "Ab你";
char str3[] = {'e','f','g','h','\0'};
strlen计算字符串长度
//int len1 = strlen(str1);
//int len2 = strlen(str2);
//int len3 = strlen(str3);
//printf("%d %d %d\n",len1,len2,len3);
strcat拼接字符串
//strcat(str2,str3);
//printf("%s\n",str2);
//printf("%s\n",str3);
strcpy复制字符串
//strcpy(str2,str3);
//printf("%s\n",str2);
//printf("%s\n",str3);
strcmp比较字符串
//int test = strcmp(str2,str3);
//printf("%d\n",test);
strlwr小写字符串
//strlwr(str2);
//printf("%s\n",str2);
//strupr大写字符串
strupr(str2);
printf("%s\n",str2);
return 0;
}