C语言 字符数组 案例详细解析

目录

一:字符串

二:二维字符数组

三:字符串变量的初始化

四:二维字符数组的初始化定义

五:字符串数组 编程练习


一:字符串

字符串 可以看作是 一维字符数组

字符串打印 & 字符数组地址打印  示例如下:

#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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenruhan_QAQ_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值