C语言基础-08 字符数组、字符串

2023-11-16

目录

一、定义字符数组

二、字符数组的初始化

三、字符串和字符串结束标志

四、字符数组的输入输出

五、使用字符串处理函数

1.输出字符串的函数

2.输入字符串的数组

六、数组中常用的字符串函数

1.strlen

2.strcat、strncat

3.strcmp 

4.strcpy 、strncpy

5.sprintf

6.sscanf

7.strlwr、strupr


一、定义字符数组

1.用来存放字符数据的数组是字符数组。在字符数组中的一个元素内存放一个字符。

  •  char一个字符占1个字节;int、float一个字符占4个字节
  • c[1]=' ';空格也是一个字符型数据

2.由于字符数据是以整数形式(ASCLL代码)存放的,因此也可以用整型数组来存放字符据

  • int c[10]; c[0]='a'; //其实c[0]=97; 在C语言中合法,但浪费存储空间
  • char a[ ]={0,1,2,3,4,5}; //存放的是ASCLL码

二、字符数组的初始化

三、字符串和字符串结束标志

  1. 在C语言中,是将字符串作为字符数组来处理的
  2. 为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符“\0”作为结束标志
  3. 字符串长度:字符个数+1(1代表'\0')

"C program"字符串是存放在一维数组中的,占10个字节,字符占9个字节,最后一个字节'\0'是由系统自动机上的

4.字符数组和字符串的区别:

  • 字符数组存放多个字符,字符串以空字符'\0'为结束标志
  • C语言中无字符串类型,用字符数组存放
  • 字符数组元素用单引号' ';字符串用双引号" "

四、字符数组的输入输出

1.逐个字符输入输出。用格式符"%c"输入或输出一个字符。

2.将整个字符串一次输入或输出。用格式符"%s",意思是对字符串(string)的输入输出

  • scanf("%s", );  //空格作为字符串输入分隔符,读取不到空格
  • scanf函数中的输入项如果是字符数组,不要再加地址符&,因为在C语言中数组名代表该数组第一个元素的地址(或者说数组的起始地址)
  • char ch[13];gets(ch); //能够读取到空格
  • 在C语言中,没有二进制,有八进制(%o)、十进制(%d、%f)、十六进制(%x)

五、使用字符串处理函数

1.输出字符串的函数

puts(字符数组)

#include<stdio.h>
int main()
{
       char str[]={"China\nBeijing"};
       puts(str);
       return 0;
}//将一个字符串(以'\0'结束的字符序列)输出到终端

2.输入字符串的数组

gets(字符数组)

gets(str)  //str是已定义的字符数组

注意:用puts或gets函数只能输入或输出一个字符串

六、数组中常用的字符串函数

(需要添加 string.h 头文件)

1.strlen

  • strlen计算数组的长度,遇到第一个\0之前的元素个数
#include<string.h> 
#include<stdio.h>
int main(){
	printf("%d\n",strlen("\t\"\086\xff\n"));
} 
//结果:2
  • strlen和sizeof的区别:strlen返回的是数组的元素个数;sizeof返回的是数组的长度
#include<stdio.h>
#include<string.h> 
int main(){
	char s[5]={0};//语法是正确的
	printf("请输入一个五位数:") ;
	gets(s);
	size_t len = strlen(s);
	printf("数组的长度是%d\n",len);
	printf("数组的长度是%d\n",sizeof(s));
} 

2.strcat、strncat

  • strcat、strncat进行字符串的拼接
  • strcat(x,y);将y字符串拼接到x字符串的后面
  • strncat(x,y,n);其中n表示y数组在追加到x后面,需要添加几个字母

注:字符数组中遇到 \0 表示结束位

#include<stdio.h>
#include<string.h> 
int main(){
	char a[50]="hello";
	char b[50]="world";
    //strcat(a,b);
	strncat(a,b,5);
	puts(a);
}//运行结果为helloworld

3.strcmp 

  • strcmp 对两个字符串进行比较
  • strcmp(a,b); 先比较字符串的第一个元素
  • 若a字符串的第一个元素>b字符串的第一个元素,则返回一个大于零的值
  • 若a字符串的第一个元素<b字符串的第一个元素,则返回一个小于零的值
  • 若第一个元素相同,就比较第二个元素,直到结束如果都相同,则返回0
void main(void){
	char a[50]="h";
	char b[50]="H";

	int x = strcmp(a,b);
	printf(_Format:"%d\n",x);  // h的ASCII码比H大, 结果为:1
}

4.strcpy 、strncpy

  • strcpy 、strncpy 字符数组的拷贝
  • strcpy(x,"aaa"); 将字符串aaa赋值到数组x中去
  • strncpy(x,"012345678",n);将指定的字符串按照指定的个数n拷贝到数组x中去
#include<stdio.h>
#include<string.h> 
int main(){
	    char a[50]="a";
	    char b[50]="h";
	    strcpy(a,"aaa");  
		puts(a);  // 结果:aaa
		strncpy(b,"0123456789",5);  
		puts(b);  //结果:01234
}

5.sprintf

  • 将任意数字转成字符串
#include<stdio.h>
#include<string.h> 
int main(){
	    char a[50]="a";
		char b[50]="123456";
		sprintf(a,"%d",1234);
		puts(a); //结果为1234
}

6.sscanf

  • 将字符串转成任意类型的数字
#include<stdio.h>
#include<string.h> 
int main(){
	    char a[50]="a";
		char b[50]="123456";
		int num =0;
			sscanf(b,"%d",&num);
			printf("num = %d ",num);
			// 结果为num = 123456  
}

注:还有fputs、fgets\strstr、strrchr、strchr函数(后面章节具体介绍)

7.strlwr、strupr

  • strlwr(字符串);将字符串中大写字母换成小写字母
  • strupr(字符串);将字符串中小写字母换成大写字母
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言基础-08 字符数组、字符串 的相关文章

  • matlab 算法集锦

    算法集锦 决策树 划分点 function n h huafendian1 x n返回增益 h返回划分点 假设0代表第一类 假设1代表第二类 输入x第一列为属性 第二列为用于学习的分类结果 m sort x 1 按小到大排序 x x m t
  • Guava 之 Multimap

    Multimap 是 guava 包下的一个接口 是一个 key collection 类型的集合 Multimap 接口方法 GwtCompatible public interface Multimap
  • Git rebase变基操作

    先讲个例子理解一下什么是变基 A B C dev D E F G master 两个分支master dev 其中dev分支是在master分支上的提交点E拉出的分支 在两个分支合并之前 master分支有了新的提交F G 此时想在gitl
  • C的泛型编程

    C的泛型编程 C语言支持泛型编程吗 Generic关键字 泛型算法 C99的tgmath h void 指针 总结 泛型编程 generic programming 是程序设计语言的一种风格或范式 泛型允许程序员在强类型程序设计语言中编写代
  • RocketMQ经典高频面试题大全(附答案)

    编程界的小学生 0 彩蛋 1 说说你们公司线上生产环境用的是什么消息中间件 2 多个mq如何选型 3 为什么要使用MQ 4 RocketMQ由哪些角色组成 每个角色作用和特点是什么 5 RocketMQ中的Topic和JMS的queue有什
  • AQS(AbstractQueuedSynchronizer)阻塞队列

    AQS 队列同步器是用来构建锁或其他同步组件的基础框架 它使用一个 volatile int state 变量作为共享资源 如果线程获取资源失败 则进入同步队列等待 如果获取成功就执行临界区代码 释放资源时会通知同步队列中的等待线程 同步器

随机推荐

  • PyTorch YOLOv8入门解读与Python实现

    PyTorch YOLOv8入门解读与Python实现 YOLOv8是一种基于PyTorch框架实现的目标检测算法 它能够快速准确地检测图像中的多个目标 本文将详细解读YOLOv8的原理 并提供相应的Python代码实现 YOLOv8简介
  • Oracle--初学小白基础篇(第一版)

    文章目录 一 Oracle11g介绍 1 Oracle11g安装和卸载 Oracle11g安装 Oracle11g卸载 1 使用Oracle Universal Installer管理工具卸载 2 使用 deinstall bat 批处理文
  • Redis事务、持久化、发布订阅

    文章目录 Redis事务 Redis持久化 RDB Redis DataBase 快照方式 AOF Append Only File 日志形式 Redis发布订阅 发布订阅模型 实例 Redis发布订阅命令 原理 Redis事务 Redis
  • flutter 字符串的常用属性及方法

    1 字符串长度 var str 字符串的长度 print 打印 str length 打印 6 var str1 hello dart print 打印 str1 length 打印 10 2 是否为空 str isEmpty为空true
  • 关于ElasticSearch的Update By Query的那些著名的坑

    提起es的Update By Query很多人一定也不陌生 它对应的就是关系型数据库的update set where 语句 这对应一般的存储引擎而言算是最基本的功能 但它的坑确不少 多到让你使用起来很奔溃 比如批量更新时非事务模式执行 允
  • selenium自动化测试的问题解决及优化

    目录 一 安装出现的问题 1 webdriver has no attribute find element by id 2 gecodriver needs to be in PATH 3 安装了selenium报错has no attr
  • io第一天

    ubuntu ubuntu day1 c cat 8 c include
  • PL/SQL 导入SQL文件时报“Error reading file”

    从另一台机器上导出了一个表的数据 有2万多条 导出的sql文件大小将近40M 之后使用PL SQL的Command Window窗口执行sql文件 执行命令是 SQL文件全路径 提示错误 Error reading file不知道是不是因为
  • 在Ubuntu中安装中文输入法

    文章目录 前言 基础准备 ibus Intelligent Input Bus fcitx Flexible Input Method Framework 前言 Ubuntu中安装中文输入法相比Windows上要复杂不少 其实也不算复杂 就
  • js实现一个表单输入验证,重复字符验证

    logon password check 加班到现在 还是得发个 csdn 本文主要通过一个案例介绍两个东西 正则表达式中 必须含有某类字符的时候对应的 正则写法 在我之前的正则文章中已经写过了 重复字符以及连续字符的判断方式 正则来表示验
  • JavaScript window.location对象

    http www cnblogs com ljan archive 2012 02 27 2369960 html location 地址对象 它描述的是某一个窗口对象所打开的地址 要表示当前窗口的地址 只需要使用 location 就行了
  • nodejs html引用js_nodejs做出最简单的网页服务端。【501】

    一 先去官网下载nodejs 按自己的系统一步一步操作 基本很简单 这里就不多介绍了 二 安装完成后 通过cmd验证是否安装成功 输入node v可以查看版本号 三 用开发工具创建一个js文件 命名为server js 四 开始写js文件
  • Hadoop环境搭建及常见问题解决(保姆级教程)

    Hadoop环境搭建及常见问题解决 零 资源准备 一 环境准备 1 安装虚拟机 2 环境准备 1 创建新用户xiaobai 2 安装ssh server 3 上传相关资源 4 使用putty连接服务器 5 设置主机名 6 检查和关闭防火墙
  • windows信息收集自动化脚本

    import os encoding utf 8 class information collecting object def init self self system info commands windows版本信息 n ver w
  • prbs码

    prbs7 111110110011100001101010010001011111110000001000001100001010001111001000101100111010100111110100001110001001001101
  • .Net传值方式主要有以下几种

    1 url传值 如 CheckPwd aspx user uservalue pwd pwdvalue 2 Session传值 如 Session role Administrator 3 Viewstate role Administra
  • Selenium+PhantomJS使用时报错原因及解决方案

    问题 今天在使用selenium PhantomJS动态抓取网页时 出现如下报错信息 UserWarning Selenium support for PhantomJS has been deprecated please use hea
  • 异常处理UncaughtExceptionHandler

    自动捕获未知异常的主要思路是 在Application注册一个实现了UncaughtExceptionHandler的对象 然后在该对象中调用方法Thread setDefaultUncaughtExceptionHandler设置未知异常
  • [一步一步学react系列] 03—计数器V1.0

    前言 在上文中我们学习了react的工作流程 知道了用户点击操作先是分发action 然后reducer根据接收到的action来做具体值的改变的这个曲折过程 仔细看redux工作流的盆友一定发现了 上文中并没有用到最中心的store 那么
  • C语言基础-08 字符数组、字符串

    目录 一 定义字符数组 二 字符数组的初始化 三 字符串和字符串结束标志 四 字符数组的输入输出 五 使用字符串处理函数 1 输出字符串的函数 2 输入字符串的数组 六 数组中常用的字符串函数 1 strlen 2 strcat strnc