C/C++|物联网开发入门+项目实战|C语言基础|玩转c代码---从输入输出开始-学习笔记(6)

news2024/12/27 13:09:07

文章目录

  • 玩转c代码---从输入输出开始
    • 参考教程:C语言编程:一本全面的C语言入门教程(第3版)第16章
    • 需要掌握的内容
    • 需要了解的内容
      • 常见的人机交互接口
      • 串口的输入输出
    • PC常用的几个输入输出函数
      • 示例代码
    • 3 printf函数使用难点分析
      • A.格式控制字符串的基本形式:
        • 示例代码
      • B.—些特殊字符的输入
    • 常用键盘输入函数及重难点
      • 1 字符输入函数getchar函数原型:
      • 2 格式化输入函数scanf
      • 3 scanf难点分析
        • 传入的参数(回车,空格或者tab当作分隔)
        • scanf格式字符格式字符
          • 示例
      • 遇到非空白字符的处理
      • 通过文件的人机交互函数
  • Tips: initialization makes integer from pointer without a cast

玩转c代码—从输入输出开始

参考:麦子学院-C语言程序设计及快速入门

参考教程:C语言编程:一本全面的C语言入门教程(第3版)第16章

需要掌握的内容

printf函数的使用putchar函数的使用scanf函数的使用getchar函数的使用
库函数的概念及使用方法

需要了解的内容

·人机交互的概念:计算机和人进行通信的方式

常见的人机交互接口

屏幕输出和视频输入
键盘输入
音频的输入输出
嵌入式系统的人机交互

串口的输入输出

.LED灯及LED阵列的输出
蜂呜器的输出
触摸屏
更加复杂的输入输出通路(无线网络,手机)

PC常用的几个输入输出函数

常用屏幕输出函数及重难点
什么是库函数,如何使用库函数
可参考:C函数速查
1 字符输出函数putchar
2 格式化的输出函数printf
函数原型:
extern void printf(const char *format,…),
调用格式:
printf(“格式控制字符串”,输出表列)

示例代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int int_num = 30;
    float flo_num = 25.5f;
    int num1 = 0;
    int num2 = 0;

    printf("Hello world! int num dec=%d     %o      %x\n",int_num, int_num, int_num);
}

输出:Hello world! int num dec=30 36 1e

3 printf函数使用难点分析

A.格式控制字符串的基本形式:

[标志][输出最小宽度][.精度][长度]类型
常见类型字符

4 printf常见格式字符格式字符
d 以十进制形式输出带符号整数(正数不输出符号),如果浮点数用%d,类型错误,只能输出0
o 以八进制形式输出无符号整数(不输出前缀0) 。
x,X 以十六进制形式输出无符号整数(不输出前缀0x)
u 以十进制形式输出无符号整数。
f 以小数形式输出单、双精度实数-
e,E 以指数形式输出单、双精度实数。
g,G 以%f或%e中较短的输出宽度输出单、双精度实数
c 输出单个字符,
s 输出字符串。
printf常见标志

  • 结果左对齐,右边填空格。
  • 输出符号(正号或负号)
    空格 输出值为正时冠以空格,为负时冠以负号
    #对c、s、 d、u类无影响;
    对○类,在输出时加前缀o;
    对x类,在输出时加前缀Ox;
    对e、g、f类当结果有小数时才给出小数点。

示例代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int int_num = 30;
    float flo_num = 25.5f;
    int num1 = 0;
    int num2 = 0;

    //printf("Hello world! int num dec=%d     %o      %x\n",int_num, int_num, int_num);

    printf("****************************************************************\n");
    printf("%26d|%-8d|%8.6d|%8.8f\n",int_num, int_num, int_num, flo_num);
    printf("%#8o|%#8X|%8d|%-8d|%8.6d|%8.8f\n", int_num, int_num, int_num, int_num, int_num, flo_num);
}

输出:


                    30|30      |  000030|25.50000000
 036|    0X1E|      30|30      |  000030|25.50000000

在这里插入图片描述

B.—些特殊字符的输入

转义字符含义
\反斜线
单引号
"双引号
\r回车符
\t制表符(tab)
\b退格符
\f换页符
\0空字符
\xhh以十六进制数表示的字符
\ooo以八进制数表示的字符

常用键盘输入函数及重难点

1 字符输入函数getchar函数原型:

int getchar(void);

2 格式化输入函数scanf

函数原型: int scanf(char *format[,argument…]);
调用格式:scanf(“<格式化字符串>”,<地址表>);

3 scanf难点分析

传入的参数(回车,空格或者tab当作分隔)

格式化字符串

scanf格式字符格式字符

    说明
    %a 读入一个浮点值(仅c99有效)
    %A 同上
    %c 读入一个字符
    %d 读入十进制整数
    %i 读入十进制,八进制,十六进制整数
    %o 读入八进制整数
    %x 读入十六进制整数
    %X 同上
    %c 读入一个字符
    %s 读入一个字符串
    %f 读入一个浮点数
    %F 同上
    %e 同上
    %E 同上
    %g 同上
    %G 同上
    %p 读入一个指针
    %u 读入一个无符号十进制整数
    %n 至此已读入值的等价字符数
    %[] 扫描字符集合
    %% 读%符号
示例
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int int_num = 30;
    float flo_num = 25.5f;
    int num1 = 0;
    int num2 = 0;
    char get_char = "";

    //printf("Hello world! int num dec=%d     %o      %x\n",int_num, int_num, int_num);

    // printf("****************************************************************\n");
    // printf("%26d|%-8d|%8.6d|%8.8f\n",int_num, int_num, int_num, flo_num);
    // printf("%#8o|%#8X|%8d|%-8d|%8.6d|%8.8f\n", int_num, int_num, int_num, int_num, int_num, flo_num);

    // get_char = getchar();
    // printf("%c \n",get_char);

    scanf("%d  %d", &num1, &num2);

    printf("%d  %d\n", num1, num2);

    return 0;
}

输出:

E:\temp>cd "e:\temp\" && gcc 1.c -o 1 && "e:\temp\"1
1.c: In function 'main':
1.c:10:21: warning: initialization makes integer from pointer without a cast [enabled by default]
123 32
123  32

遇到非空白字符的处理

读取的时候如果有非空白字符,则输入的时候也需要加上。或者,中间不加入分隔符。

通过文件的人机交互函数

文件操作函数列表
fopen,fclose,getc,putc,feof,fgets,fputs,fprintf,fscanf

Tips: initialization makes integer from pointer without a cast

参考原文链接:https://blog.csdn.net/qq_52749711/article/details/128735193
编译器警告: warning: initialization makes integer from pointer without a cast [enabled by default]
表示在初始化一个指针时将一个整型值直接赋值给指针,而不是使用强制类型转换。
在C语言中,指针和整型是不同类型,不能直接相互赋值。
可以尝试以下方法来解决:
使用强制类型转换,将整型转换为指针类型。
将整型赋值给一个临时变量,再将临时变量赋值给指针。
检查代码中是否有错误,如果是误操作导致的,修改对应的问题
请注意,尽管编译器可能不会报错,但是这样的代码是不安全的。
最好的方法是将整型转换为指针类型,或者检查代码是否有错误。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【毕业论文】| 基于Unity3D引擎的冒险游戏的设计与实现

&#x1f4e2;博客主页&#xff1a;肩匣与橘 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由肩匣与橘编写&#xff0c;首发于CSDN&#x1f649; &#x1f4e2;生活依旧是美好而又温柔的&#xff0c;你也…

NVIDIA CUDA核函数编写注意事项之In-place

CUDA系列文章目录 文章目录CUDA系列文章目录前言总结参考资料前言 CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一计算架构&#xff09;是由NVIDIA所推出的一种集成技术&#xff0c;是其对于GPGPU&#xff08;A General-Purpose Graphics Processing U…

【源码解析】JDK 动态代理实现

基本流程 主方法 在该方法中&#xff0c;我们呈现了在日常使用 JDK 动态代理机制的方法。 public class VehicleDynamicProxy { /** * 被代理对象 */ public Vehicle targetVehicle; public VehicleDynamicProxy(Vehicle targetVehicle) { this.targetVehicle target…

注册中心要集成 SpringCloud实现负载均衡,需要哪些接口和规范?

前几天有个大兄弟问了我一个问题&#xff0c;注册中心要集成SpringCloud&#xff0c;想实现SpringCloud的负载均衡&#xff0c;需要实现哪些接口和规范。 既然这个兄弟问到我了&#xff0c;而我又刚好知道&#xff0c;这不得好好写一篇文章来回答这个问题&#xff0c;虽然在后面…

Omniverse Extensions Command 写在其他.py 文件内 导致找不到Command 无法运行 不生效 的解决方案

提要&#xff1a; Command扩展不在extension.py内 例如我的Command&#xff1a;ScatterCreatePointInstancerCommandLJ 在 commands.py 内 然后使用时报错&#xff1a; 2023-04-10 18:16:11 [Error] [omni.kit.commands.command] Cant execute command: "ScatterCreat…

基于springboot和ajax的简单项目 05 日志界面的查找功能

01.这个是基于input标签的查找功能。 02.修改更新table标签的函数&#xff0c;把username这个参数&#xff0c;加到getjson函数的params中&#xff0c;实现依靠username来查询数据。 var username$("#searchNameId").val();//如下语句的含义是什么&#xff1f;动态在…

STM32F4_PWM输出详解

目录 1. PWM简介 2. PWM原理 3. 定时器PWM输出比较 4. 定时器PWM捕获/比较通道 5. PWM输出相关寄存器 5.1 捕获/比较模式寄存器 TIMx_CCMR1 5.2 捕获/比较使能寄存器 TIMx_CCER 5.3 捕获/比较寄存器 TIMx_CCR1~4 5.4 刹车(断路)和死区寄存器 TIMx_BDTR 6. 库函数配置…

【Python_Scrapy学习笔记(一)】Scrapy框架简介

Scrapy框架简介 前言 Scrapy 框架是一个用 python 实现的为了爬取网站数据、提取数据的应用框架&#xff0c;使用 Twisted 异步网络库来处理网络通讯&#xff0c;可以高效的完成数据爬取。本文主要介绍 Scrapy 框架的构成与工作原理。 正文 1、Scrapy安装 Windows安装&…

【Unity UPR】造个获取深度法线纹理的轮子

描边需要深度法线纹理的加持&#xff0c;效果才能达到最好&#xff0c;但URP下很多版本不支持直接获取_CameraNormalsTexture&#xff0c;而我本人也尝试了一下在12.1.7下偷懒直接拿SSAO里的Depth Normal图&#xff0c; 虽然也能实现吧&#xff0c;但是需要打开SSAO的同时&…

商务接待广州考斯特商务租车详解!

进入四月份以来&#xff0c;全国各个地区都有很多商务活动举办&#xff0c;广州也不例外&#xff0c;广州很多地区都有商务活动的需求。因此不少主办方都需要商务租车来接待客户&#xff0c;而丰田考斯特是市面上常见的一款高端中巴车&#xff0c;主要是因为考斯特的可靠性、安…

【软件设计师13】数据库设计

数据库设计 1. 数据库设计过程 2. E-R模型 3. E-R图向关系模型的转换 例如一对一联系&#xff0c;可以将联系单独做为关系模式&#xff0c;也可以存放到任意一个实体中 而一对多要合并只能合并到多这边&#xff0c;不能存放到1 多对多则联系必须单独转成一个关系模式 4. 案…

赛狐ERP | 亚马逊选品方法与策略详解:如何挑选最优质的产品?

亚马逊作为全球电商巨头&#xff0c;其产品种类之丰富也是无人能及。然而&#xff0c;在如此繁杂的商品体系下&#xff0c;如何选品成为了摆在商家面前的一道难题。本文将从亚马逊选品的目标、方法、策略三个方面进行详细介绍。 一、选品的目标 在进行选择之前&#xff0c;必…

【C语言】位运算 {位运算的应用 :关闭位,判断位,打开位,转置位;位域}

一、基础 参与位运算的对象只能是整型数据(int, unsigned, char)&#xff0c;不能为实型 移位操作符 按位左移n位表示&#xff1a;原数*2^n按位右移n位表示&#xff1a;原数/2^n&#xff08;整除&#xff09;上述运算只适用于左右移位时被溢出舍弃的位不包含1的情况 二、位运…

7.redis-集群

目录 1. 概念 2. 三主三从redis集群配置 3. redis集群读写 4. 主从扩展案例 5.主从降容案例 6.用到的命令 1. 概念 1).分片: 集群中的每个redis实例都被认为是整个数据的一个分片&#xff0c;官方建议是最大1000个 2).槽位: redis集群有16384个哈希槽&#xff0c;每个key…

Mac平台上有哪些好用的常用软件?

我大概分几类给你介绍一下吧。 一、办公类 1.微软的office系列&#xff0c;在mac平台也有office的全家桶&#xff0c;习惯用微软office的也可以安装。 2.wps office&#xff0c;wps可以说是国产最好用的office软件&#xff0c;最重要的是wps可以跨平台&#xff0c;并且云文档…

C/C++程序设计——static关键字

一、修饰局部变量 &#xff08;1&#xff09;称为静态局部变量&#xff0c;改变局部变量的生命周期&#xff0c;生命周期由局部变为全局。 &#xff08;2&#xff09;作用域不发生改变。 &#xff08;3&#xff09;静态局部变量只能被初始化一次。 本质&#xff1a; 改变了局…

获取UNIX系统时间

① 基本认识 UNIX系统时间主要分为两种&#xff1a; 日历时间 和 进程时间 ② 日历时间 该时间是自协调时间时间 1970年1月1日 00:00:00这个特定时间来计算累积的秒数。&#xff08;称为UTC 格林尼治标准时间&#xff09; 时间值是存放在系统类型time_t里面. ③ 进程时间 也称为…

redis哨兵模式配置(配置文件等)

Redis-Sentinel机制主要用三个功能&#xff1a; (1)监控&#xff1a;不停监控Redis主从节点是否安装预期运行 (2)提醒&#xff1a;如果Redis运行出现问题可以 按照配置文件中的配置项 通知客户端或者集群管理员 (3)自动故障转移&#xff1a;当主节点下线之后&#xff0c;哨兵…

OpenGL 简介

OpenGL 简介 GPU 接口规范 对于刚接触 OpenGL 的初学者,常常会有这样一个疑问: OpenGL 的源码在哪里,如何编译? 然而实际上 OpenGL 并不是一个软件实现,更多的是一个标准协议; OpenGL 更像是一种显卡驱动标准,由各个硬件厂家适配,各个硬件厂商根据 OpenGL 接口规范编撰对应的…

【系统集成项目管理工程师】项目进度管理

&#x1f4a5;十大知识领域&#xff1a;项目进度管理 主要考计算题 项目进度管理包括以下 7 个过程: 规划进度管理过程定义活动过程排列活动顺序过程估算活动资源过程估算活动持续时间过程制定进度计划过程控制进度过程 一、规划进度管理过程 制定政策、程序和文档以管理项目进…