大话C语言:第22篇 字符数组

1 字符数组概述

C语言中没有字符串这种数据类型,可以通过char的数组来替代。数字0(和字符 '\0' 等价)结尾的char数组就是一个字符串,字符串是一种特殊的char的数组。

#include <stdio.h>

int main() 
{
    char c1[] = {'c', ' ', 'p', 'r', 'o', 'g'}; // 普通字符数组
    printf("c1 = %s\n", c1);                    // 有可能乱码,因为没有'\0'结束符

    // 以'\0'('\0'就是数字0)结尾的字符数组是字符串
    char c2[] = {'c', ' ', 'p', 'r', 'o', 'g', '\0'};
    printf("c2 = %s\n", c2);

    // 字符串处理以'\0'(数字0)作为结束符,后面的'h', 'l', 'l', 'e', 'o'不会输出
    char c3[] = {'c', ' ', 'p', 'r', 'o', 'g', '\0', 'h', 'l', 'l', 'e', 'o', '\0'};
    printf("c3 = %s\n", c3);

    // 使用字符串初始化,编译器自动在后面补0,常用
	char c4[] = "c prog";
    printf("c4 = %s\n", c4);

    return 0;
}

注意,如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组。

2 字符数组初始化

  • 直接初始化

char str[] = "Hello, World!";
char str[] = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
  • memset函数

// memset函数放在string.h文件
// void *memset(void *s, int ch, size_t n);
char str[256];
memset(str, 0, 256);

3 字符串的输入输出

由于字符串采用了'\0'标志,字符串的输入输出将变得简单方便。

字符串的输入方法:

// 通过格式控制符%s输入字符串。除了字符串,scanf() 还能输入其他类型的数据。
char str[128];
scanf("%s", str)

// 直接输入字符串,并且只能输入字符串。
char str[128];
gets(str);

注意,scanf() 和 gets() 是有区别的:

  • scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。

  • gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。换句话说,gets() 用来读取一整行字符串。

#include <stdio.h>
int main()
{
    char str1[30] = {0};
    char str2[30] = {0};
    char str3[30] = {0};
    //gets() 用法
    printf("Input a string: ");
    // 输入字符串str1带空格
    gets(str1);
    
    //scanf() 用法
    printf("Input a string: ");
    // 输入字符串str2不带空格
    scanf("%s", str2);
    // 输入字符串str3带空格
    scanf("%s", str3);
   
    printf("\nstr1: %s\n", str1);
    printf("str2: %s\n", str2);
    printf("str3: %s\n", str3);
    return 0;
}

字符串的输出方法:

// 输出字符串并自动换行,该函数只能输出字符串
char str[128];
puts(str);

// 通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还能输出其他类型的数据
char str[128];
printf(str);

例如,

#include <stdio.h>

int main()
{
    char website[] = "www.whccf.cn";
    printf("%s\n", website);
    puts(website);
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/681191.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法学习笔记——时间复杂度和空间复杂度

时间复杂度和空间复杂度 常数操作&#xff1a; 固定时间的操作&#xff0c;执行时间和数据量无关 位运算 > 算数运算 > 寻址 > 哈希运算&#xff0c;都是常数操作&#xff0c;哈希运算操作时间最慢 链表的get(i)方法不是常数操作&#xff0c;因为链表不是连续的存储…

idea如何根据路径快速在项目中快速打卡该页面

在idea项目中使用快捷键shift根据路径快速找到该文件并打卡 双击shift(连续按两下shift) -粘贴文件路径-鼠标左键点击选中跳转的路径 自动进入该路径页面 例如&#xff1a;我的实例路径为src/views/user/govType.vue 输入src/views/user/govType或加vue后缀src/views/user/go…

实验八、地址解析协议《计算机网络》

水逆退散&#xff0c;学业进步&#xff0c;祝我们都好&#xff0c;不止在夏天。 目录 一、实验目的 二、实验内容 &#xff08;1&#xff09;预备知识 &#xff08;2&#xff09;实验步骤 三、实验小结 一、实验目的 完成本练习之后&#xff0c;您应该能够确定给定 IP 地…

机器学习多场景实战

机器学习已不再局限于理论探讨&#xff0c;而是广泛渗透到我们生活的方方面面&#xff0c;成为解决复杂问题、优化决策过程的强有力工具。从智能推荐系统个性化推送你可能喜爱的电影和商品&#xff0c;到金融风控领域精准识别欺诈交易&#xff1b;每一个应用场景都是机器学习技…

15 - 有趣的电影(高频 SQL 50 题基础版)

15 - 有趣的电影 select* from cinema wheredescription!boring and id%2!0 order by rating desc;

医用腕带朔源用的条形码与二维码如何选择

在医疗环境中的医用腕带作为患者身份识别和管理的重要工具&#xff0c;做为条形码和二维码腕带上的溯源技术&#xff0c;更是为患者信息快速获取、准确传递的保障&#xff0c;实现更加高效和准确的患者身份识别和管理&#xff0c;这种技术可以大大提高医疗服务的效率和质量&…

v1.2.70-FastJson的AutoType机制研究

v1.2.70-FastJson的AutoType机制研究 最近在对接Alexa亚马逊语音技能&#xff0c;Smart Home Skill Apis时&#xff0c;有一个配置的JSON字符串是这样的&#xff1a; { "capabilityResources": {"friendlyNames": [{"type": "asset",…

如何组织基于Sqlalchemy的项目

在使用 SQLAlchemy 构建项目时&#xff0c;可以遵循一些常用的组织结构和最佳实践&#xff0c;以确保项目清晰、易于维护。下面就是我在构建项目时遇到的一些问题&#xff0c;并做了详细的记录&#xff0c;为了方便大家学习少走一些弯路。 1、问题背景 在基于Sqlalchemy的项目…

python 内置map()函数(高效处理序列数据方法,将函数应用于一个序列的每个元素)(懒加载)

文章目录 深入解析 Python 内置函数 map()函数定义与用法基本示例 map() 与列表推导式比较&#xff08;列表推导式在语法上更加简洁&#xff0c; map() 在某些情况下执行效率更高&#xff09;示例&#xff1a;将数字转化为字符串 map() 结合 lambda 函数使用多个序列结论 深入解…

边缘计算网关助力自动洗车机实现远程状态监测与即时报警

随着城市化进程的加快和人们生活水平的提高&#xff0c;自动洗车机作为一种高效、便捷的洗车设备&#xff0c;在市场上的需求日益增长。然而&#xff0c;自动洗车机作为一种高价值的自动化设备&#xff0c;其运行状态和安全性直接关系到洗车质量和顾客体验&#xff0c;因此对自…

SL4010 40V耐压 300W大功率升压IC 12V5A大功率UPS电源专用

在当今这个信息高速发展的时代&#xff0c;电力稳定已成为企业运营和个人生活的核心需求。UPS&#xff08;不间断电源&#xff09;作为电力的守护者&#xff0c;其性能和质量直接关系到我们的工作和生活能否顺畅进行。今天&#xff0c;我们为您推荐一款高性能的UPS应急电源芯片…

RPC框架原理(一)

RPC框架原理 网络和IO的关系&#xff0c;IO&#xff08;input和output&#xff09;面向的是谁&#xff1f;OSI 7层参考模型&#xff0c;TCP/IP协议为什么会出现一个会话层三次握手socket心跳keep alive四次挥手 网络IO&#xff08;IO模型&#xff09; IO框架底层 学习顺序&…

k8s学习--sessionAffinity会话保持(又称会话粘滞)详细解释与应用

文章目录 sessionAffinity简介什么是sessionAffinity模式介绍应用场景工作原理优势 应用环境步骤2. 给服务打补丁&#xff0c;增加会话粘滞 设置回sessionAffinity为None sessionAffinity简介 什么是sessionAffinity 简单理解 确保把来自同一客户的一个完整会话的请求转发至后…

喜讯丨泰迪智能科技实力中标“健康大数据与人工智能实验室建设”项目

泰迪智能科技以健康数据分析与应用为主题的实验中心&#xff0c;为学校大健康产业大数据与人工智能应用人才培养提供载体&#xff0c;并基于培养中心根据学生专业的不同&#xff0c;提供不同的健康大数据学习资源&#xff0c;实现健康大数据技术和数据分析应用能力培养普遍提升…

深入理解计算机系统 家庭作业5.13

A:关键路径在xmm0那条路,书中几条关键路径全部是xmm0,有xmm1时,xmm1也是 B:3 C:1 D:按书中的定义: 关键路径才是下界!按书上的方法根据 图5-12 算出关键路径的CPE即可. 非关键路径把它视为黑盒子.因为是乱序和超标量的,没办法搞清楚处理器具体怎么处理这些指令.

c# 开发的wpf程序闪退,无法用try catch捕获异常

之前开发的一个程序是c#wpf开发&#xff0c;基于.net framework 4.6.1的&#xff0c;一切都是正常的&#xff0c;但是在我重新装了win11后在程序logo出现后直接闪退&#xff0c;报错 返回值为 -1073740791 (0xc0000409)&#xff0c;而且定位到代码时发现是&#xff0c; publi…

LabVIEW2017破解安装教程

LabVIEW2017破解安装教程&#xff1a; 1、新版LabVIEW2017分为32位和64位两个平台&#xff0c;多种语言版本(需要LabVIEW2017中文版的朋友请选择WinChn版本)&#xff0c;大家选择自行选择符合系统的版本下载并解压 2、本次安装以Win 7 64位系统为例&#xff0c;运行“2017LV-64…

accelerate 笔记:梯度同步的时间效率

1 介绍 PyTorch 的分布式模块通过在系统中所有GPU之间进行来回通信来操作。 这种通信需要时间&#xff0c;并且确保所有进程了解彼此的状态在使用ddp模块时会在特定的触发点发生 这些触发点被添加到PyTorch模型中&#xff0c;特别是它们的 forward() 和 backward() 方法中当通…

宝德电脑文件删除了怎么恢复?提供详细恢复指南

在数字化时代&#xff0c;电脑已成为我们工作、学习和生活中不可或缺的设备。然而&#xff0c;在使用宝德电脑或其他任何品牌的电脑时&#xff0c;我们都有可能遭遇文件误删的尴尬情况。一旦重要文件丢失&#xff0c;不仅会影响我们的工作效率&#xff0c;还可能造成无法挽回的…

打开C# 大门:Hallo, World!

C# 介绍 C#&#xff08;C Sharp&#xff09;是一种面向对象的编程语言&#xff0c;由微软公司开发。它是 .NET Framework 的一部分&#xff0c;用于构建 Windows 应用程序、Web 应用程序、移动应用程序等。C# 语言的设计目标是简单、现代化、易于学习和使用。在本文中&#xf…