C语言的基本输入输出函数+构造类型数据——数组

C语言的基本输入输出函数

1. 字符输入输出函数 getchar()putchar()

  • getchar():从标准输入(通常是键盘)读取一个字符,并返回其ASCII值。
  • putchar():将指定的字符(由其ASCII值表示)写入标准输出(通常是屏幕)。

示例代码

#include <stdio.h>

int main() {
    char ch;

    // 使用getchar()读取字符
    printf("请输入一个字符: ");
    ch = getchar();

    // 使用putchar()输出字符
    printf("你输入的字符是: ");
    putchar(ch);

    return 0;
}

2. 格式输入输出函数 scanf()printf()

  • scanf():从标准输入读取格式化的输入。
  • printf():将格式化的数据写入标准输出。

示例代码

#include <stdio.h>

int main() {
    int num;

    // 使用scanf()读取整数
    printf("请输入一个整数: ");
    scanf("%d", &num);

    // 使用printf()输出整数
    printf("你输入的整数是: %d\n", num);

    return 0;
}

3. 字符串输入输出函数 gets()puts()(注意:gets() 在C11标准中已被弃用)

  • gets()(已弃用):从标准输入读取一行,直到遇到换行符或EOF,然后丢弃换行符。由于它不会检查缓冲区溢出,因此不推荐使用。
  • puts():将指定的字符串写入标准输出,并在末尾添加一个换行符。

示例代码(使用 fgets() 替代 gets()):

#include <stdio.h>

#define MAX_LINE_LENGTH 100

int main() {
    char line[MAX_LINE_LENGTH];

    // 使用fgets()读取一行
    printf("请输入一行文本: ");
    fgets(line, MAX_LINE_LENGTH, stdin);

    // 使用puts()输出这行文本
    puts(line);

    return 0;
}

注意:在上面的示例中,我使用了 fgets() 函数来替代 gets(),因为 gets() 函数存在缓冲区溢出的风险。fgets() 函数允许你指定一个最大长度,从而防止溢出。

构造类型数据——数组

  1. 一维数组的基本概念,存储方式

一维数组是由具有相同类型的元素的集合所组成的数据结构,这些元素在内存中连续存放,通过数组名和索引(或称为下标)来唯一确定数组中的每个元素。

存储方式:一维数组在内存中是连续存放的,第一个元素的地址是数组的基地址,其他元素的地址是基地址加上偏移量(即元素大小乘以下标)。

2) 一维数组元素的引用、初始化及输入输出

引用:通过数组名和索引来引用数组元素,如 array[index]

初始化:可以在声明数组的同时进行初始化,如 int array[5] = {1, 2, 3, 4, 5};

输入输出:使用循环和 scanfprintf 函数进行输入输出。

#include <stdio.h>

int main() {
    int array[5] = {1, 2, 3, 4, 5};
    for (int i = 0; i < 5; i++) {
        printf("%d ", array[i]); // 输出
    }
    printf("\n");
    
    int value;
    for (int i = 0; i < 5; i++) {
        scanf("%d", &array[i]); // 输入
    }
    return 0;
}

3) 二维数组的基本概念,存储方式

二维数组是由一维数组组成的数组,即数组的数组。每个一维数组称为二维数组的行。二维数组在内存中也是连续存放的,但先存放第一行的所有元素,再存放第二行的所有元素,以此类推。

存储方式:二维数组在内存中是按行存储的,即先存储第一行的所有元素,然后存储第二行的所有元素,依此类推。

4) 二维数组元素的引用、初始化及输入输出

引用:通过数组名、行索引和列索引来引用二维数组元素,如 array[row][col]

初始化:可以在声明二维数组的同时进行初始化,如 int array[2][3] = {{1, 2, 3}, {4, 5, 6}};

输入输出:使用嵌套循环和 scanfprintf 函数进行输入输出。

#include <stdio.h>

int main() {
    int array[2][3] = {{1, 2, 3}, {4, 5, 6}};
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", array[i][j]); // 输出
        }
        printf("\n");
    }
    
    int value;
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            scanf("%d", &array[i][j]); // 输入
        }
    }
    return 0;
}

5) 字符数组的基本概念,存储方式

字符数组是用于存储字符的数组,可以存储字符串(以 ‘\0’ 结尾的字符序列)。字符数组在内存中的存储方式与一维数组相同。

6) 字符串的初始化及输入输出

初始化:可以在声明字符数组的同时进行初始化,如 char str[] = "Hello, World!";。注意,字符串会自动在末尾添加 ‘\0’ 作为结束符。

输入输出:使用 scanfprintfgetsputs 函数进行输入输出。但 scanf 在读取字符串时不会读取空格,所以通常使用 fgets 来读取包含空格的字符串。

#include <stdio.h>

int main() {
    char str[20] = "Hello, World!";
    printf("%s\n", str); // 输出
    
    fgets(str, 20, stdin); // 输入,注意 fgets 会读取换行符,但通常我们不需要它,所以可能需要手动去除
    str[strcspn(str, "\n")] = 0; // 去除换行符
    printf("%s\n", str); // 输出
    return 0;
}

注意:strcspn 函数用于获取字符串中第一个指定字符集(这里是换行符)之前的子串的长度,这里用来去除换行符。如果你的编译器或环境中
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

模版与策略模式

一&#xff0c;怎么选择 如果需要固定的执行流程&#xff0c;选模版 如果不需要固定的执行流程&#xff0c;只需要对一个方法做具体抽象&#xff0c;选策略 参考文章&#xff1a; 常用设计模式汇总&#xff0c;告诉你如何学习设计模式 二&#xff0c;常用写法 子类 exten…

龙讯旷腾PWmat计算vdW异质结中热载流子冷却 | 复刻《Phys. Chem. Chem. Phys 》文献

01 NAMD 背景介绍 在各类光物理与光化学过程当中&#xff0c;均会牵涉到激发态载流子动力学过程&#xff0c;诸如电荷弛豫、复合以及输运等等。光激发或者电子注入将初始的平衡状态打破&#xff0c;所产生的热载流子在其演化进程中&#xff0c;会与原子核产生强烈耦合。此时&a…

关于车规级功率器件热可靠性测试的分享

随着中国电动汽车市场的稳步快速发展和各大车企布局新能源的扩散&#xff0c;推动了车规级功率器件的快速增长。新能源汽车行业和消费电子都会用到半导体芯片&#xff0c;但车规级芯片对外部环境要求很高&#xff0c;涉及到的一致性和可靠性均要大于工业级产品要求&#xff0c;…

利用Systemverilog+UVM搭建SOC及ASIC的RTL验证环境

在集成电路设计的复杂世界中&#xff0c;验证环节是确保设计满足预期功能和性能要求的关键步骤。随着系统级芯片&#xff08;SOC&#xff09;和特定应用集成电路&#xff08;ASIC&#xff09;的规模和复杂性不断增加&#xff0c;传统的验证方法已经难以满足高效、准确的验证需求…

基于顺序表的排序

任务内容 基于一个顺序表&#xff0c;实现如下排序算法&#xff1a; 直接插入排序&#xff1b;交换排序 &#xff08;冒泡&#xff09;&#xff1b;简单选择排序 代码实现 #include<iostream> #include<string> using namespace std; #define keytype int type…

Javaweb登录校验

登录校验 JWT令牌的相关操作需要添加相关依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>一、摘要 场景&#xff1a;当我们想要访问一个网站时&am…

真空玻璃可见光透射比检测 玻璃制品检测 玻璃器皿检测

建筑玻璃检测 防火玻璃、钢化玻璃、夹层玻璃、均质钢化玻璃、平板玻璃、中空玻璃、真空玻璃、镀膜玻璃夹丝玻璃、光栅玻璃、压花玻璃、建筑用U形玻璃、镶嵌玻璃、玻璃幕墙等 工业玻璃检测 钢化安全玻璃、电加温玻璃、玻璃、半钢化玻璃、视镜玻璃、汽车安全玻璃、汽车后窗电热…

Docker+MySQL:打造安全高效的远程数据库访问

在现代应用开发和部署中&#xff0c;数据库是关键组件之一。无论是开发环境还是生产环境&#xff0c;快速、可靠地部署和管理数据库都是开发人员和运维人员面临的常见挑战之一。 Docker是一种流行的容器化技术&#xff0c;它使得应用程序的部署和管理变得非常简单和高效。通过使…

大数据-数据分析初步学习,待补充

参考视频&#xff1a;数据分析只需3小时从入门到进阶&#xff08;up亲身实践&#xff09;_哔哩哔哩_bilibili 数据指标&#xff1a; 对当前业务有参考价值的统计数据 分类&#xff1a;用户数据&#xff0c;业务数据&#xff0c;行为数据 用户数据 存量&#xff1a; DAU&#…

CSS3中鲜为人知但非常强大的 Clip-Path 属性

CSS3中鲜为人知但非常强大的 Clip-Path 属性 在CSS3中,clip-path属性可以让我们快速创建各种各样的不规则图形,而无需使用图片或者复杂的绘图工具。它可以帮助我们实现一些非常出色的视觉效果,但遗憾的是它并不是很常见。 clip-path属性可以接受多种不同的值,比如polygon()、…

Matlab终于能够实现Transformer预测了

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 数据介绍 结果展示 完整代码 今天…

Day9—Spark运行模式及RDD的创建

Spark概述 大数据开发的总体架构 可以看到&#xff0c;在数据计算层&#xff0c;作为Hadoop核心组成的MapReduce可以结合Hive通过类SQL的方式进行数据的离线计算&#xff08;当然也可以编写独立的MapReduce应用程序进行计算&#xff09;&#xff1b;而Spark既可以做离线计算&a…

金属配件加工厂设备远程监控

随着科技的飞速发展&#xff0c;智能制造已成为制造业转型升级的重要方向。在金属配件加工领域&#xff0c;设备的稳定运行和高效管理对于提升产品质量、降低生产成本至关重要。HiWoo Cloud平台凭借其强大的远程监控功能&#xff0c;为金属配件加工厂提供了全新的解决方案&…

RabbitMQ详解-06RabbitMQ高级

1. 过期时间TTL 可以对消息设置预期的时间&#xff0c;在这个时间内都可以被消费者接收获取&#xff1b;过了之后消息自动被删除。RabbitMQ可以对消息和队列设置TTL。有以下两种设置方法&#xff1a; 通过队列属性设置&#xff0c;队列中所有消息都有相同的过期时间。对消息进…

省市区下拉选择:3个el-select(附完整代码+json)

目录 直接上做出的效果&#xff1a; 页面代码&#xff1a; 使用click.native&#xff1a; data及引入&#xff1a; 初始化&#xff1a; methods&#xff1a; JSON: 示例结构&#xff1a; 1.code.json 2.pca-code.json 回显&#xff1a; 视频效果&#xff1a; 直接上做出…

5个好用的中文AI大语言模型_中文大语言模型

AI大语言模型&#xff08;Large Language Models, LLMs&#xff09;是近1-2年来人工智能领域的重要发展&#xff0c;它们通过深度学习技术&#xff0c;特别是基于Transformer的架构&#xff08;如GPT、BERT等&#xff09;&#xff0c;实现了对自然语言处理的巨大突破。 AI大语…

Vulkan入门系列2- 绘制三角形

概述&#xff1a; Vulkan的学习曲线是比较陡峭的&#xff0c;学习Vulkan刚开始像是在爬一个陡坡&#xff0c;等上了这个陡坡之后&#xff0c;后面学习曲线就相对比较平缓了。那么在Vulkan中绘制一个三角形&#xff0c;就相当于是在爬这样一个陡坡&#xff0c;因为绘制三角形需…

「51媒体」时尚类媒体邀约宣发资源

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 时尚类媒体邀约宣发资源可以多样化且针对性地满足品牌或活动的推广需求。以下是一些主要的资源及其特点&#xff1a; 时尚杂志&#xff1a;国内外知名时尚杂志&#xff0c;如《Vogue》、…

SparkSQL的分布式执行引擎-Thrift服务:学习总结(第七天)

系列文章目录 SparkSQL的分布式执行引擎 1、启动Thrift服务 2、beeline连接Thrift服务 3、开发工具连接Thrift服务 4、控制台编写SQL代码 文章目录 系列文章目录前言一、SparkSQL的分布式执行引擎(了解)1、启动Thrift服务2、beeline连接Thrift服务3、开发工具连接Thrift服务4、…

MS3121地隔离放大器

MS3121 是一款应用于车载音频系统的地隔离放大 器。芯片可以很好地解决汽车音频系统中的绕线电阻问 题&#xff0c;以及由车载电子设备带来的噪声问题。另外&#xff0c;芯片 所需要的外围电容小&#xff0c;便于系统的集成。注意&#xff0c;芯片的 地电位需要和后级音频功…