C语言以字符形式读写文件
一、字符读取函数 fgetc
(一)、函数介绍
fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符。函数原型为:
int fgetc(FILE* fp)
fp 为文件指针。fgetc() 读取成功时返回读取到的字符,读取到文件末尾或读取失败时返回 EOF
在文件内部有一个位置指针,用来指向当前读写到的位置,也就是读写到第几个字节。在打开文件时,该指针总是指向文件的第一个字节。使用fgetc函数后,该指针会向后移动一个字节,可以连续多次使用fgetc 读取多个字符。
(二)、使用 fgetc 读取文件实例
文件 test.txt 中有以下内容:
I am Test.txt!
我是被读取的文件。
test。。。
现在使用 fgetc函数将文件中的内容读取出来,程序如下:
// c 语言以字符形式读取文件(ANSI编码)
#include <stdio.h>
int main()
{
FILE* fp;
char ch;
fp = fopen("./test.txt", "r");
if (NULL != fp)
{
while (EOF != (ch=fgetc(fp)) )
{
putchar(ch);
}
printf("\n");
return 1;
}
return 0;
}
程序运行结果如下图所示:

二、字符写入函数 fputc
(一)、函数介绍
fputc 是 file output char 的缩写,意思是向指定的文件中写入一个字符。函数原型为:
int fputc(int ch, FILE* fp);
ch 为要写入的字符,fp 为文件指针。 fputc() 写入成功时返回写入的字符,失败时返回 EOF,返回值为 int 也是为了容纳这个负数。
写入文件时需要注意一下两点:
- 被写入的文件可以用写,读写,追加方式打开,用写或者读写方式打开一个已存在的文件时将清除原有文件的内容,并将写入的字符放在文件的开头。如需保留原有文件的内容,并把写入的字符放在文件的结尾,就必须使用追加的方式打开。不管以何种方式打开,被写入的文件若不存在时则创建该文件。
- 每写入一个字符,文件内部位置指针向后移动一个字节。
(二)、使用 fputc 写入文件实例
下面的程序实现创建文件 fputctest.txt ,然后从键盘获取输入字符并使用 fputc 函数将输入的字符写入文件中。最后再使用 fgetc 将写入文件中的内容读取出来。
#include <stdio.h>
int main()
{
FILE* fp;
char ch;
fp = fopen("./fputctest.txt", "wt+"); //以读写方式打开文件,文件不存在则创建
if (NULL == fp)
{
printf("open file failed!\n");
return 1;
}
// 每次从键盘读取一个字符写入文件
printf("开始写入文件:\n");
while ((ch =getchar()) != '\n')
{
fputc(ch, fp);
}
rewind(fp); // 将文件指针重新指向文件头
printf("\n开始读取文件:\n");
if (NULL != fp)
{
while (EOF != (ch = fgetc(fp)))
{
putchar(ch);
}
printf("\n");
return 1;
}
fclose(fp);
return 0;
}
程序运行结果如下:

C语言以字符形式读写文件的更多相关文章
- 第31天学习打卡(File类。字符流读写文件)
File类 概念 文件,文件夹,一个file对象代表磁盘上的某个文件或者文件夹 构造方法 File(String pathname) File(String parent,String child) ...
- Java开发笔记(八十五)通过字符流读写文件
前面介绍了文件的信息获取.管理操作,以及目录下的文件遍历,那么文件内部数据又是怎样读写的呢?这正是本文所要阐述的内容.File工具固然强大,但它并不能直接读写文件,而要借助于其它工具方能开展读写操作. ...
- Java之字符流读写文件、文件的拷贝
字符流读数据 – 按单个字符读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: int d ...
- Java 字符流读写文件
据说,java读写文件要写很多,贼麻烦,不像c艹,几行代码就搞定.只能抄抄模板拿来用了. 输入输出流分字节流和字符流.先看看字符流的操作,字节转化为字符也可读写. 一.写入文件 1.FileWrite ...
- C语言学习010:fopen读写文件
在文件input.csv文件中,我们有数据如下 Apple Pear Litchis Pineapple Watermelon 现在我们将input.csv文件下的读取并写入到output.csv文件 ...
- Java 字符流实现文件读写操作(FileReader-FileWriter)
Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...
- java基础之io流总结四:字符流读写
字符流读写只适用于字符文件. 基本字符流(转换流)读写文件 转换流本身是字符流,但是实例化的时候传进去的是一个字节流,所以叫做转换流 InputStreamReader isr = new Input ...
- chmod以数字形式改变文件权限
Linux文件的三种身份和四种权限,三种身份分别为: u:文件的拥有者 g:文件所属的群组 o:其他用户 对于每个身份,又有四种权限,分别为: r:读取文件的权限(read) w:写入文件的权限(wr ...
- C语言读写文件
对文件的读和写是最常用的文件操作.在C语言中提供了多种文件读写的函数: 字符读写函数 :fgetc和fputc 字符串读写函数:fgets和fputs 数据块读写函数:freed和fwrite 格式 ...
随机推荐
- 【转载】COM 组件设计与应用(九)——IDispatch 接口 for VC6.0
原文: http://vckbase.com/index.php/wv/1224.html 一.前言 终于写到了第九回,我也一直期盼着写这回的内容耶,为啥呢?因为自动化(automation)是非常常 ...
- VI ORB-SLAM初始化与VINS初始化对比(将vi orb-slam初始化方法移植到vins中)
初始化时需要求出的变量:相机和imu外参r t.重力g.尺度s.陀螺仪和加速度计偏置ba bg. 下面对两种算法初始化的详细步骤进行对比: 求陀螺仪偏置bg 求解公式相同,求解方法不同.公式如下,VI ...
- C++ STL 学习笔记__(6)优先级队列priority_queue基本操作
10.2.7优先级队列priority_queue v 最大值优先级队列.最小值优先级队列 v 优先级队列适配器 STL priority_queue v 用来开发一些特殊的应用,请对stl的类 ...
- matplotlib简单示例
一.简介 以下引用自百度百科 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 . 通过 Matplotlib,开发者可以仅需要 ...
- 【坚持】Selenium+Python学习记录 DAY9
2018/05/29 [来源:菜鸟教程](http://www.runoob.com/python3/python3-examples.html) 运算符重载 https://segmentfault ...
- k8s踩坑记第2篇--3个IP折磨人的故事
例子来源于<Kubernetes实践指南>一书.问题依然没有解决,求助大神. 测试环境 Centos 7.0 docker 1.13.1 kubectl v1.5.2 etcd 3.2.1 ...
- Oz 创建Ubuntu镜像
参考链接: http://blog.csdn.net/gcogle/article/details/52767135http://tlinux.blog.51cto.com/7288656/17497 ...
- 【推荐系统】neural_collaborative_filtering(源码解析)
很久没看推荐系统相关的论文了,最近发现一篇2017年的论文,感觉不错. 原始论文 https://arxiv.org/pdf/1708.05031.pdf 网上有翻译了 https://www.cnb ...
- Vue+webpack报错: listen EADDRINUSE: address already in use :::8080
如果本地运行多个vue+webpack项目会报错:listen EADDRINUSE: address already in use :::8080: 提示含义:地址端口已经被占用 注:8080指的是 ...
- shell之arp命令
arp: 显示所有的表项. arp -d address: 删除一个arp表项. arp -s address hw_addr: 设置一个arp表项. 常用参数: -a 使用bsd形式输出.(没有 ...