1、共用体

共用体是一种特殊的结构,允许在相同的位置存储不同的数据类型。可以定义一个带有多成员的共同体,但是任何时候只能有一个成员带有值。

定义共用体:

union Data
{
int i;
float f;
char str[20];
} 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)的更多相关文章

  1. C复习手记(Day4)

    1.C错误处理 errno.perror() 和sterror() perror() 函数显示您传给它的字符串,后跟一个冒号.一个空格和当前 errno 值的文本表示形式. strerror() 函数 ...

  2. C复习手记(Day3)

    C预处理器 C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤.简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理.我们将把 C 预处理器 ...

  3. C复习手记(Day1)

    auto存储类:所有局部变量默认的存储类  ex:{int mount;auto int month}  auto只用在函数内,只做局部变量 register 存储类:register 存储类用于定义 ...

  4. ROS学习手记 9 -- 阶段性复习

    ROS 阶段性总结 1. 基本概念 ROS 是建立在Linux特别是Ubuntu系统上的一套软件系统,它具有操作系统的特征 ,负责管理各个模块的协同运行.设计初衷主要是面向机器人软硬件开发的特点:多 ...

  5. 复习JavaScript随手记

    数据类型 基本类型 string number boolean undefined number类型,包含整数浮点数 NaN和自己都不相等,涉及NaN的计算结果都是NaN isNaN()函数用于判断一 ...

  6. HQYJ嵌入式学习笔记——C语言复习day2

    1.计算机的数值表示 数值类型和非数值类型 二进制 0,1 (0b1001) 八进制 0~7   (0146) 十进制 0~9 十六进制 0~f (0x3f) 八进制转二进制-->一位八进制数换 ...

  7. Knockout.js随手记(2)

    计算属性 konckout.js的API文档,写的极为详细和生动,透过MVVM的运作原理,开发时只需专注于定义ViewModel逻辑,不需耗费心力处理TextBox.Select的onchange.o ...

  8. 清北学堂学习总结day2

    今天是钟皓曦大佬讲课,先来膜一波   %%%%% •数论 数论是这次培训的一个重点,那么什么是数论呢? 数论是研究整数性质的东西,所以理论上day2不会涉及小数QwQ (切入正题) •整除性: 设a, ...

  9. ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters

    上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameters 我不理解为何 ROS wiki 要把service与parameter放在一起介绍, 很想分 ...

随机推荐

  1. js回网页顶部

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. 武汉科技大学ACM:1004: 华科版C语言程序设计教程(第二版)习题5.6

    Problem Description 这天老师又给小豪出了一道题目:给你三根长度分别为a,b,c的火柴,让你计算这三跟火柴能组成的三角形的面积. Input 输入每行包括三个数a,b,c. Outp ...

  3. [转]C++强制类型转换

    dynamic_cast:   通常在基类和派生类之间转换时使用,run-time   castconst_cast:   主要针对const和volatile的转换. static_cast:    ...

  4. centOS上安装redis

    1.安装tcl支持 yum install tcl 2.安装redis我们以最新的2.8.9为例 $ wget http://download.redis.io/releases/redis-2.8. ...

  5. gcc使用笔记

    1.如何在gcc中传输宏定义? 参考如下红色部分,可以传入宏定义 gcc [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel] [-Wwarn...] [-p ...

  6. 复杂事件处理引擎—Esper 处理模型

    1.esper的处理模型是持续性的——根据statement中事件流(event stream).视图(views).过滤器(filters)等的选择,esper引擎一旦处理事件数据,就会变更stat ...

  7. C++ primer学习方法

    C++ primer学习:   第一次可以跳着看.关键是要尽快用起来,在使用中熟练,而不是在细节中迷失.   以C++ Primer第五版为例,第一遍读的时候: Part1也就是前七章,除了6.6,6 ...

  8. 通知栏快捷按钮自定义教程以及快捷面板提取的思路-转自魔趣论坛-lonyii2

    原帖地址: http://bbs.mfunz.com/forum.php?mod=viewthread&tid=235198&extra=page%3D1%26filter%3Dtyp ...

  9. HDU4452 Running Rabbits

    涉及知识点: 1. direction数组. 2. 一一映射(哈希). Running Rabbits Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  10. Java枚举7常见种用法

    DK1.5引入了新的类型——枚举.在Java中它虽然算个“小”功能,却给我的开发带来了“大”方便. 方法/步骤 用法一:常量 在JDK1.5之前,我们定义常量都是:publicstaticfianl. ...