目录

文章目录

  • 目录
  • 前文列表
  • 输入/输出
    • scanf() 和 printf()
    • getchar() 和 putchar()
  • 文件操作
    • 打开文件
    • 关闭文件
    • 写入文件
    • 读取文件
    • 二进制 I/O 函数

前文列表

《程序编译流程与 GCC 编译器》
《C 语言编程 — 基本语法》
《C 语言编程 — 基本数据类型》
《C 语言编程 — 变量与常量》
《C 语言编程 — 运算符》
《C 语言编程 — 逻辑控制语句》
《C 语言编程 — 函数》
《C 语言编程 — 高级数据类型 — 指针》
《C 语言编程 — 高级数据类型 — 数组》
《C 语言编程 — 高级数据类型 — 字符串》
《C 语言编程 — 高级数据类型 — 枚举》
《C 语言编程 — 高级数据类型 — 结构体与位域》
《C 语言编程 — 高级数据类型 — 共用体》
《C 语言编程 — 高级数据类型 — void 类型》
《C 语言编程 — 数据类型的别名》
《C 语言编程 — 数据类型转换》
《C 语言编程 — 宏定义与预处理器指令》
《C 语言编程 — 异常处理》
《C 语言编程 — 头文件》

输入/输出

输入,意味着要向程序输入数据,可以是以文件的形式或从命令行中进行。
输出,意味着要在屏幕上、打印机上或任意文件中输出数据。

C 语言把所有的设备都当作文件。所以处理设备(e.g. 显示器)的输入/输出的方式与文件操作的方式相同。以下三个文件称之为标准输入/输出文件,会在程序执行时自动打开,以便访问键盘和屏幕。C 语言中常用的标准输入/输出函数在 stdio.h 头文件中声明。

注:文件指针是访问文件的入口。

scanf() 和 printf()

  • int scanf(const char *format, ...) 函数从标准输入流 stdin 读取输入,并根据提供的 format 来浏览输入。
  • int printf(const char *format, ...) 函数把输出写入到标准输出流 stdout ,并根据提供的格式产生输出。

format 可以是一个简单的常量字符串,可以分别指定 %s、%d、%c、%f 等来输出或读取字符串、整数、字符或浮点数类型数据。还有许多其他可用的格式选项,可以根据需要使用。

#include <stdio.h>int main() {float f;printf("Enter a number: ");scanf("%f",&f);printf("Value = %f", f);return 0;
}

getchar() 和 putchar()

  • int getchar(void) 函数从屏幕读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。可以在循环内使用这个方法,以便从屏幕上读取多个字符。
  • int putchar(int c) 函数把字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个字符。可以在循环内使用这个方法,以便在屏幕上输出多个字符。
#include <stdio.h>int main() {int c;printf("Enter a value :");c = getchar( );printf("\nYou entered: ");putchar(c);printf("\n");return 0;
}

文件操作

常见的文件操作有创建、打开、关闭文本文件或二进制文件。一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数,也提供了操作系统的系统调用来处理存储设备上的文件。

打开文件

使用 fopen() 函数来创建一个新的文件或者打开一个已有的文件,这个函数调用会初始化并返回一个 FILE 类型变量,其包含了所有用来控制文件数据流的必要的信息。

FILE *fopen(const char * filename, const char * mode);
  • mode 类型

如果处理的是二进制文件,则需使用下面的访问模式来替代:

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

关闭文件

使用 fclose() 函数:

int fclose(FILE *fp);

这个函数实际上会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。如果成功关闭文件,函数会返回整数零,如果关闭文件时发生错误,函数返回 EOF。EOF 是一个定义在头文件 stdio.h 中的常量。

写入文件

  • 函数 fputc() 把实参整型 c 的字符值写入到 fp 所指向的输出流中。如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF。
int fputc(int c, FILE *fp);
  • 函数 fputs() 把把一个以 null 结尾的字符串 s 写入到 fp 所指向的输出流中。如果写入成功,它会返回一个非负值,如果发生错误,则会返回 EOF。
int fputs(const char *s, FILE *fp);
  • 还可以使用 fprintf() 函数来写把一个字符串写入到文件中。
int fprintf(FILE *fp,const char *format, ...)

示例:

#include <stdio.h>int main() {FILE *fp = NULL;fp = fopen("/tmp/test.txt", "w+");fprintf(fp, "This is testing for fprintf...\n");fputs("This is testing for fputs...\n", fp);fclose(fp);return 0;
}

读取文件

  • 函数 fgetc() 从 fp 所指向的输入文件中读取一个字符。返回值是读取的字符,如果发生错误则返回 EOF。
int fgetc(FILE *fp);
  • 函数 fgets() 从 fp 所指向的输入流中读取 n-1 个字符。它会把读取的字符串复制到缓冲区 buf,并在最后追加一个 null 字符来终止字符串。如果这个函数在读取最后一个字符之前就遇到一个换行符 '\n' 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符。
char *fgets(char *buf, int n, FILE *fp);
  • 可以使用 fscanf() 函数来从文件中读取字符串,但是在遇到第一个空格和换行符时,它会停止读取。
int fscanf(FILE *fp, const char *format, ...)

示例:

#include <stdio.h>int main() {FILE *fp = NULL;char buff[255];fp = fopen("/tmp/test.txt", "r");fscanf(fp, "%s", buff);printf("1: %s\n", buff);fgets(buff, 255, fp);printf("2: %s\n", buff);/* 使用显示的强制类型转换,实际上可忽略 */fgets(buff, 255, (FILE*)fp);printf("3: %s\n", buff );fclose(fp);return 0;
}

运行:

$ ./main
1: This
2:  is testing for fprintf...3: This is testing for fputs...

首先,fscanf() 函数只读取了 This,因为它在后边遇到了一个空格。其次,调用 fgets() 读取剩余的部分,直到行尾。最后,调用 fgets() 完整地读取第二行。

二进制 I/O 函数

size_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 语言编程 — 输入/输出与文件操作相关推荐

  1. c语言编程输入a是输出为a_C ++编程基本输入,输出,数据类型,声明能力倾向问题和解答...

    c语言编程输入a是输出为a This section contains C++ programming Basic Input, Output, Data types, Declaration etc ...

  2. c语言 比较4个整数大小,c语言编程 输入4个整数,要求由小到大输出

    c语言编程 输入4个整数,要求由小到大输出 答案:4  信息版本:手机版 解决时间 2019-10-05 15:46 已解决 2019-10-05 12:14 输入4个整数,要求由小到大输出 因为我是 ...

  3. c语言 文件课件,C语言课件第13章-文件操作.ppt

    C语言课件第13章-文件操作.ppt 第13章文件操作 哈尔滨工业大学计算机科学与技术学院苏小红sxh 本章学习内容 二进制文件和文本文件 文件的打开和关闭 文件的顺序读写与随机读写 标准输入输出及其 ...

  4. Allegro输出DXF文件操作指导

    Allegro输出DXF文件操作指导 Allegro支持输出DXF文件,用于检查PCB的结构,具体操作如下 首先在PCB上打开需要的输出的层面,需要哪层开哪层,如下图所示 点击file-export ...

  5. PHP 打印0-n的所有质数,输出1到n中所有的素数 C语言编程:输出1到N中所有质数的个数...

    c语言输入一个n值,输出1-n之间所有素数之和及素数寻分享大佬帮助啊别和往事过不去,因为它已经过去.别和现实过不去,因为你还要过下去. #include "stdio.h"int ...

  6. c语言中计算一个字母的序数,C语言编程 输入一串字符统计英文字母的个数

    C语言编程:输入一行字符,至少50个,统计其中英文字母,数字,其他字母个数 楼上那个不能统计空格个数,我这个可以#include#includeintmain(){intcnt_c=0,cnt_n=0 ...

  7. Allegro如何输出STP文件操作指导

    Allegro如何输出STP文件操作指导 Stp文件用于查看实物,Allegro支持输出STP格式的文件,下面介绍如何输出,操作步骤如下 选择File-export-STEP 根据自己的需要选择参数 ...

  8. c语言gcb最小公倍数,C编序编程题目:输入两个正整数m和n,求其最大公约数和最小公倍...,C语言编程,输入两个正整数M和N(MN),计算M和N...

    问题标题 C编序编程题目:输入两个正整数m和n,求其最大公约数和最小公倍...,C语言编程,输入两个正整数M和N(M 2019-3-27来自ip:15.121.164.188的网友咨询 浏览量:228 ...

  9. Allegro如何输出EMN文件操作指导

    Allegro如何输出EMN文件操作指导 Allegro支持输出emn文件以供其他结构软件导入以查看实物效果 比如Proe,Soild work等等 下面介绍如何输出EMN文件 选择 File-exp ...

最新文章

  1. G - IP地址转换
  2. Verilog初级教程(14)Verilog中的赋值语句
  3. java treeset 转array,Java TreeSet toArray(T[])用法及代碼示例
  4. linux 系统下配置java环境变量
  5. 计算机专业好还是铁道运输管理好,铁道运输管理专业主要是干什么的?
  6. github在线执行_什么是Github操作,如何自动执行测试和Slack通知?
  7. java时间往后一天_往后余生,不能再陪你了
  8. 浮点错误是什么意思_Excel函数计算常见错误值,都是什么意思
  9. 《计算机组成原理(微课版)》第1章课后习题答案
  10. Allatori:代码混淆器的使用(EclipseIDEA)
  11. python爬取上海高级人民法院网开庭公告数据
  12. 基于java的高速公路收费系统 计算机毕业设计
  13. python中 f代表什么_python 中下拉框中的f,v,m是什么意思??
  14. 饿了么商家开放平台踩坑记录1,php更新商品信息提示业务异常BUSINESS_ERROR by勤勤学长 318692996
  15. 超市微信小程序怎么做_微信小程序便利店怎么开?便利店和百货超市怎么开发小程序?...
  16. svn中有的代码被标注黄色,绿色和红色,分别表示什么意思呢?
  17. telnet 不是内部或外部命令
  18. 数值积分公式及龙贝格(Romberg)算法实现matlab
  19. Android 插件化开发——宿主APP加载APK插件
  20. d3.js——多柱体柱状图(v5)

热门文章

  1. 查看服务器CPU配置信息,转帖-CentOS查看CPU信息、位数、多核信息;查看服务器硬件信息...
  2. android ffmpeg 简书,偶遇FFmpeg(三)——Android集成
  3. python连接服务器失败_python-查询期间失去与MySQL服务器的连接
  4. java-1.11.0的环境配置,JAVA 环境配置
  5. mysql主主和F5高可用_MYSQL 主主热备高可用方案与实现
  6. 终于不瞎编了!AI学会了“谷歌一下”,回答问题正确率达90% | DeepMind
  7. 字节跳动技术团队提出「AI渲染」方案,手机端也能实现影视级渲染效果
  8. 删库跑路大神的一生:曾在家造炸弹被捕,现卖房押宝NFT,原是开源创业之星...
  9. 助力健康中国,国内首个中文医疗信息处理挑战榜正式发布
  10. 小冰和她的兄弟姐妹们组团出道:唱歌跳舞写文章样样都会,而且都开放版权...