C复习手记(Day2)
1、共用体
共用体是一种特殊的结构,允许在相同的位置存储不同的数据类型。可以定义一个带有多成员的共同体,但是任何时候只能有一个成员带有值。
定义共用体:
union Data 共用体占用的内存应足够存储共用体中最大的成员,即data将占用20个字节的内存 |
2、typedef
ex:
typedef struct
Books{…}Book;
{…
Book book;
…}
typedef
与#define的区别:
typedef仅限于为类型定义符号名称,#define 不仅可以定义别称,还能为数值定义别名
typedef由编译器执行解释,#define由预编译器进行处理
3、输入输出
- getchar() & putchar()函数
int getchar(void)
函数从屏幕读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。
int putchar(int c)
函数把字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。
gets() & puts()函数
char *gets(char *s) 函数从 stdin 读取一行到 s 所指向的缓冲区,直到一个终止符或
EOF。(stdin:标准输入文件指针)
int puts(const char *s) 函数把字符串 s 和一个尾随的换行符写入到
stdout。(stdout:标准输出文件指针)
- scanf() & rpintf()函数
int scanf(const char *format, ...) 函数从标准输入流 stdin 读取输入,并根据提供的
format 来浏览输入int printf(const char *format, ...) 函数把输出写入到标准输出流 stdout
,并根据提供的格式产生输出。注:format 可以是一个简单的常量字符串,但是您可以分别指定 %s、%d、%c、%f
等来输出或读取字符串、整数、字符或浮点数。
4、文件读写
- 打开文件
以使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE
的一个对象,类型FILE 包含了所有用来控制流的必要的信息。ex: FILE *fopen(const char * filename,const cahr * mode);
在这里,filename 是字符串,用来命名文件,访问模式 mode 的值可以是下列值中的一个:
模式 描述 r 打开一个已有的文本文件,允许读取文件。 w 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,你的程序会从文件的开头写入内容。 a 打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。 r+ 打开一个文本文件,允许读写文件。 w+ 打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度???,如果文件不存在,则会创建一个新文件。 a+ 打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。 如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式:
- 关闭文件
int fclose(FILE *fp);
如果成功关闭文件,fclose( ) 函数返回零,如果关闭文件时发生错误,函数返回
EOF。这个函数实际 上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。EOF 是一个定义在头文件 stdio.h
中的常量。
- 写入文件
int fputc(int c,FILE *fp);
函数 fputc() 把参数 c 的字符值写入到 fp
所指向的输出流中。如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF。
- 读取文件
int fgetc(FILE *fp); //从文件中读取单个字符
fgetc() 函数从 fp 所指向的输入文件中读取一个字符。返回值是读取的字符,如果发生错误则返回
EOF。遇到空格即停止;char *fgets(char * buf , int n, FILE *fp)
函数 fgets() 从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区
buf,并在最后追加一个 null 字符来终止字符串。遇到换行符读取终止;也可以使用 int fscanf(FILE *fp, const char *format, ...)
函数来从文件中读取字符串,但是在遇到第一个空格字符时,它会停止读取。 - 二进制I/O函数
二进制输入输出:
szie_t fread(void *ptr,size_t size_of_elements,size_t
number_of_elements,FILE *a_file) ;
size_t fwrite(const void *ptr,size_t size_of_elements,size_t
number_of_elements,FILE *a_file);
这两个函数都是用于存储块的读写 - 通常是数组或结构体。
C复习手记(Day2)的更多相关文章
- C复习手记(Day4)
1.C错误处理 errno.perror() 和sterror() perror() 函数显示您传给它的字符串,后跟一个冒号.一个空格和当前 errno 值的文本表示形式. strerror() 函数 ...
- C复习手记(Day3)
C预处理器 C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤.简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理.我们将把 C 预处理器 ...
- C复习手记(Day1)
auto存储类:所有局部变量默认的存储类 ex:{int mount;auto int month} auto只用在函数内,只做局部变量 register 存储类:register 存储类用于定义 ...
- ROS学习手记 9 -- 阶段性复习
ROS 阶段性总结 1. 基本概念 ROS 是建立在Linux特别是Ubuntu系统上的一套软件系统,它具有操作系统的特征 ,负责管理各个模块的协同运行.设计初衷主要是面向机器人软硬件开发的特点:多 ...
- 复习JavaScript随手记
数据类型 基本类型 string number boolean undefined number类型,包含整数浮点数 NaN和自己都不相等,涉及NaN的计算结果都是NaN isNaN()函数用于判断一 ...
- HQYJ嵌入式学习笔记——C语言复习day2
1.计算机的数值表示 数值类型和非数值类型 二进制 0,1 (0b1001) 八进制 0~7 (0146) 十进制 0~9 十六进制 0~f (0x3f) 八进制转二进制-->一位八进制数换 ...
- Knockout.js随手记(2)
计算属性 konckout.js的API文档,写的极为详细和生动,透过MVVM的运作原理,开发时只需专注于定义ViewModel逻辑,不需耗费心力处理TextBox.Select的onchange.o ...
- 清北学堂学习总结day2
今天是钟皓曦大佬讲课,先来膜一波 %%%%% •数论 数论是这次培训的一个重点,那么什么是数论呢? 数论是研究整数性质的东西,所以理论上day2不会涉及小数QwQ (切入正题) •整除性: 设a, ...
- ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameters 我不理解为何 ROS wiki 要把service与parameter放在一起介绍, 很想分 ...
随机推荐
- js回网页顶部
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 武汉科技大学ACM:1004: 华科版C语言程序设计教程(第二版)习题5.6
Problem Description 这天老师又给小豪出了一道题目:给你三根长度分别为a,b,c的火柴,让你计算这三跟火柴能组成的三角形的面积. Input 输入每行包括三个数a,b,c. Outp ...
- [转]C++强制类型转换
dynamic_cast: 通常在基类和派生类之间转换时使用,run-time castconst_cast: 主要针对const和volatile的转换. static_cast: ...
- centOS上安装redis
1.安装tcl支持 yum install tcl 2.安装redis我们以最新的2.8.9为例 $ wget http://download.redis.io/releases/redis-2.8. ...
- gcc使用笔记
1.如何在gcc中传输宏定义? 参考如下红色部分,可以传入宏定义 gcc [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel] [-Wwarn...] [-p ...
- 复杂事件处理引擎—Esper 处理模型
1.esper的处理模型是持续性的——根据statement中事件流(event stream).视图(views).过滤器(filters)等的选择,esper引擎一旦处理事件数据,就会变更stat ...
- C++ primer学习方法
C++ primer学习: 第一次可以跳着看.关键是要尽快用起来,在使用中熟练,而不是在细节中迷失. 以C++ Primer第五版为例,第一遍读的时候: Part1也就是前七章,除了6.6,6 ...
- 通知栏快捷按钮自定义教程以及快捷面板提取的思路-转自魔趣论坛-lonyii2
原帖地址: http://bbs.mfunz.com/forum.php?mod=viewthread&tid=235198&extra=page%3D1%26filter%3Dtyp ...
- HDU4452 Running Rabbits
涉及知识点: 1. direction数组. 2. 一一映射(哈希). Running Rabbits Time Limit: 2000/1000 MS (Java/Others) Memory ...
- Java枚举7常见种用法
DK1.5引入了新的类型——枚举.在Java中它虽然算个“小”功能,却给我的开发带来了“大”方便. 方法/步骤 用法一:常量 在JDK1.5之前,我们定义常量都是:publicstaticfianl. ...