一、字符读取函数 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语言以字符形式读写文件的更多相关文章

  1. 第31天学习打卡(File类。字符流读写文件)

    File类 概念 文件,文件夹,一个file对象代表磁盘上的某个文件或者文件夹 构造方法  File(String pathname) File(String parent,String child) ...

  2. Java开发笔记(八十五)通过字符流读写文件

    前面介绍了文件的信息获取.管理操作,以及目录下的文件遍历,那么文件内部数据又是怎样读写的呢?这正是本文所要阐述的内容.File工具固然强大,但它并不能直接读写文件,而要借助于其它工具方能开展读写操作. ...

  3. Java之字符流读写文件、文件的拷贝

    字符流读数据 – 按单个字符读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: int d ...

  4. Java 字符流读写文件

    据说,java读写文件要写很多,贼麻烦,不像c艹,几行代码就搞定.只能抄抄模板拿来用了. 输入输出流分字节流和字符流.先看看字符流的操作,字节转化为字符也可读写. 一.写入文件 1.FileWrite ...

  5. C语言学习010:fopen读写文件

    在文件input.csv文件中,我们有数据如下 Apple Pear Litchis Pineapple Watermelon 现在我们将input.csv文件下的读取并写入到output.csv文件 ...

  6. Java 字符流实现文件读写操作(FileReader-FileWriter)

    Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...

  7. java基础之io流总结四:字符流读写

    字符流读写只适用于字符文件. 基本字符流(转换流)读写文件 转换流本身是字符流,但是实例化的时候传进去的是一个字节流,所以叫做转换流 InputStreamReader isr = new Input ...

  8. chmod以数字形式改变文件权限

    Linux文件的三种身份和四种权限,三种身份分别为: u:文件的拥有者 g:文件所属的群组 o:其他用户 对于每个身份,又有四种权限,分别为: r:读取文件的权限(read) w:写入文件的权限(wr ...

  9. C语言读写文件

    对文件的读和写是最常用的文件操作.在C语言中提供了多种文件读写的函数: 字符读写函数  :fgetc和fputc 字符串读写函数:fgets和fputs 数据块读写函数:freed和fwrite 格式 ...

随机推荐

  1. 数据增强利器--Augmentor

    最近遇到数据样本数目不足的问题,自己写的增强工具生成数目还是不够,终于在网上找到一个数据增强工具包,足够高级,足够傻瓜.想要多少就有多少!再也不怕数据不够了! 简介 Augmentor是一个Pytho ...

  2. 9 ORM-高阶补充(未完成)

    https://www.cnblogs.com/alice-bj/p/9195846.html#_labelTop https://www.cnblogs.com/yuanchenqi/article ...

  3. 3504: [Cqoi2014]危桥

    3504: [Cqoi2014]危桥 链接 分析: 首先往返的可以转化为全是“往”,那么只要将容量除以2即可. 然后S向a1连边容量为an(除以2之前为2*an),S向a2连边容量为an,b1,b2向 ...

  4. 在CentOS上安装Mysql使用yum安装mysql

    https://jingyan.baidu.com/article/c74d600079be530f6a595dc3.html

  5. jQuery js 格式化数字

    写程序与的时候,有些地方需要js或者jQuery取值,然后将50000000.00格式化成50,000,000.00这种形式: 首先创建formatCurrency.js,代码如下: function ...

  6. UWP MySQL 最新版 6.10.5是坏的

    #实锤#证实了,MySQL 最新版 6.10.5,在UWP平台并不能连接,是坏的 Oracle竟然没有测试吗?直接上线??? 我已经把把BUG设置为最高严重等级,提交给了官方. I'm using u ...

  7. 动态加载与插件系统的初步实现(四):解析JSON、扩展Fiddler

    按文章结构,这部分应该给出WCFRest项目示例,我想WinForm示例足够详尽了,况且WCFRest还不需要使用插件AppDomain那一套,于是把最近写的Fiddler扩展搬上来吧. Fiddle ...

  8. 用Metaclass实现一个精简的ORM框架

    存档: # -*- coding: utf-8 -*- class Field(object): def __init__(self, name, column_type): self.name = ...

  9. TCP协议的特点

    tcp 面向连接,三次握手,创建会话:双向的关闭tcp 可靠性,具备传输确认机制,接收端会对接收到的数据进行ack确认;tcp 具备 rtt (raund动态估算传输时间;tcp 具备超时重传机制tc ...

  10. SQL Server 各版本安装包分享

    已将SQL Server 2005以上各版本的安装包分享到百度云盘,有需要的朋友可以下载进行安装,相关安装教程可以百度搜索.安装遇到难以解决的问题可以留言给我,2016版以上在选择功能的时候建议初学者 ...