目录
一:字符串
字符串 可以看作是 一维字符数组
字符串打印 & 字符数组地址打印 示例如下:
#include<stdio.h>
int main()
{
char name[5]="lily";
printf("%s\n",name); //lily
printf("%p\n",name); //0019FF28
return 0;
}
字符串 打印单个字符:
printf("%c\n",name[1]); // i
字符串长度计算 使用strlen函数 需要引入头文件 string.h
按照如上示例计算出的长度为4 【要存储 \0 空字符串】
printf("%d\n",strlen(name)); //4
空字符串'\0'自动添加 表示终止 它占内存 但不记录字符串的总长度 所以长度为4 但是在定义的时候要为5
二:二维字符数组
先看一维:
char name[5]="lily"; //一维数组
char name1[5]="mike";
再写二维:
char user[3][5]={"lily","mike"}; //二维数组
三:字符串变量的初始化
char str1[6]=”hello”;
char str2[6]={“hello”};
char str3[6]={‘h’,’e’,’l’,’l’,’o’}; //有空字符串
char str4[ ]={‘h’,’e’,’l’,’l’,’o’}; //不写长度
char str5[ ]={ ‘h’,’e’,’l’,’l’,’o’,’\0’} //空字符串可以写可以不写
注意事项
hello”占5个字节 但此时应为”\0”预留一个字节
四:二维字符数组的初始化定义
第一个数字:有几个字符串
第二个数字:字符串长度
char buf[2][10]={‘aaa’,’bbbbbbbbb’} //二维数组 b最多9个; 二维字符数组
// buf[0] 为‘aaa’ buf[1]为’bbbbbbbbb’
char buf[ ][10]={‘aaa’,’bbbbbbbbb’}//2可以不写
buf[3][10]={‘aaa’,’bbbbb’}; //三个字符串 长度最多为9
buf[0]为‘aaa’ buf[1]为’bbbbb’
buf[2]为 ‘ ’(空字符串)这是(部分初始化)剩余部分用0补全
char buf[3][10]={0}; // 0为空字符 部分初始化
buf[0]为””
buf[1]为””
buf[2]为””(空字符串) \0空字符 ASCII码对应0
char buf[ ][10]={0}; // 这种部分初始化写法不可,默认为只有一个字符串为””(空字符串)
五:字符串数组 编程练习
输入12345678显示******** 回车12345678
#include<stdio.h>
#include<string.h>
#include<conio.h> //getch头文件
//输入数字显示 输入字母不显示 显示长度最多为8
void inputName() //输入12345678显示******** 回车12345678
{
char ch=0;
int i=0;
char name[9]={0}; //长度最多8位 加\0为9
printf("请输入密码:"); //没有回显 getch头文件 0-9 大小写字母
//结束标志:\r
while(1)
{
ch=getch();
if(ch=='\r'&&i==0) //任何内容都没输
{
printf("请输入密码:");
continue; //让用户再输一次
}
if(ch=='\r'&&i>0||i==8) //长度最多八位
{
break; //有按要求输入可以走下一步了
}
if(ch>='0'&&ch<='9')
{
putch('*');
name[i]=ch;
++i;
}
}
//查看整个字符串
printf("%s\n",name); //putch一样作用
}
int main()
{
inputName();
return 0;
}