C语言以字符串的形式读写文件

读字符串函数 fgets

fgets() 函数用来从指定的文件中读取一个字符串,并保存到字符数组中,它的用法为:

char *fgets ( char *str, int n, FILE *fp );

str 为字符数组,n 为要读取的字符数目,fp 为文件指针。

返回值:读取成功时返回字符数组首地址,也即 str;读取失败时返回 NULL;如果开始读取时文件内部指针已经指向了文件末尾,那么将读取不到任何字符,也返回 NULL。

注意,读取到的字符串会在末尾自动添加 ‘\0’,n 个字符也包括 ‘\0’。也就是说,实际只读取到了 n-1 个字符,如果希望读取 100 个字符,n 的值应该为 101。例如:

#define N 101
char str[N];
FILE *fp = fopen("D:\\demo.txt", "r");
fgets(str, N, fp);

表示从 D:\demo.txt 中读取 100 个字符,并保存到字符数组 str 中。

需要重点说明的是,在读取到 n-1 个字符之前如果出现了换行,或者读到了文件末尾,则读取结束。这就意味着,不管 n 的值多大,fgets() 最多只能读取一行数据,不能跨行。在C语言中,没有按行读取文件的函数,我们可以借助 fgets(),将 n 的值设置地足够大,每次就可以读取到一行数据。

示例 一行一行地读取文件。

#include <stdio.h>
#include <stdlib.h>
#define N 100
int main(){FILE *fp;char str[N+1];if( (fp=fopen("d:\\demo.txt","rt")) == NULL ){puts("Fail to open file!");exit(0);}while(fgets(str, N, fp) != NULL){printf("%s", str);}fclose(fp);return 0;
}

将下面的内容复制到 D:\demo.txt:
百度搜索引擎!
http://www.baidu.com
那么运行结果为:

百度搜索引擎!
http://www.baidu.com

fgets() 遇到换行时,会将换行符一并读取到当前字符串。该示例的输出结果之所以和 demo.txt 保持一致,该换行的地方换行,就是因为 fgets() 能够读取到换行符。而 gets() 不一样,它会忽略换行符。

写字符串函数 fputs

fputs() 函数用来向指定的文件写入一个字符串,它的用法为:

int fputs( char *str, FILE *fp );

str 为要写入的字符串,fp 为文件指针。写入成功返回非负数,失败返回 EOF。例如:

char *str = "http://www.baidu.com";
FILE *fp = fopen("D:\\demo.txt", "at+");
fputs(str, fp);

表示把把字符串 str 写入到 D:\demo.txt 文件中。

示例 向上例中建立的 d:\demo.txt 文件中追加一个字符串。

#include<stdio.h>
int main(){FILE *fp;char str[102] = {0}, strTemp[100];if( (fp=fopen("D:\\demo.txt", "at+")) == NULL ){puts("Fail to open file!");exit(0);}printf("Input a string:");gets(strTemp);strcat(str, "\n");strcat(str, strTemp);fputs(str, fp);fclose(fp);return 0;
}

运行程序,输入C Java Linux Shell,打开 D:\demo.txt,文件内容为:

百度搜索引擎
http://www.baidu.com
C  Java Linux Shell

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TOPSIS法 —— python

目录 1.TOPSIS法介绍 2. 计算步骤 &#xff08;1&#xff09;数据标准化 &#xff08;2&#xff09;得到加权后的矩阵 &#xff08;3&#xff09;确定正理想解和负理想解 &#xff08;4&#xff09;计算各方案到正&#xff08;负&#xff09;理想解的距离 &#xff08;…

C语言fread和fwrite的用法详解

fgets() 有局限性&#xff0c;每次最多只能从文件中读取一行内容&#xff0c;因为 fgets() 遇到换行符就结束读取。如果希望读取多行内容&#xff0c;需要使用 fread() 函数&#xff1b;相应地写入函数为 fwrite()。 Windows 系统&#xff0c;使用 fread() 和 fwrite() 时应该…

C语言fscanf和fprintf函数的用法详解

fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似&#xff0c;都是格式化读写函数&#xff0c;两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器&#xff0c;而是磁盘文件。 这两个函数的原型为&#xff1a; int fscanf ( FILE *fp, c…

C语言随机读写文件

实现随机读写的关键是要按要求移动位置指针&#xff0c;这称为文件的定位。 文件定位函数rewind和fseek 移动文件内部位置指针的函数主要有两个&#xff0c;即 rewind() 和 fseek()。 rewind() 用来将位置指针移动到文件开头&#xff0c;前面已经多次使用过&#xff0c;它的…

mysql-installer安装教程(详细图文)

目录 1.安装 2.配置系统环境变量 3.配置初始化my.ini文件 4.MySQL彻底删除 5.Navicat 安装 1.安装 先去官网下载需要的msi&#xff0c;在这放出官网下载地址下载地址 这里我具体以8.0.28 为安装例子&#xff0c;除了最新版安装界面有些变动以往的都是差不多的。 过去的版本…

Java三种随机数生成方法

java的三种随机数生成方式 随机数的产生在一些代码中很常用&#xff0c;也是我们必须要掌握的。而java中产生随机数的方法主要有三种&#xff1a;     第一种&#xff1a;new Random()     第二种&#xff1a;Math.random()     第三种&#xff1a;currentTimeMil…

Python MySQL入门连接

目录 基本环境准备 navicat的傻瓜使用方式 python连接 mysql安装教程&#xff1a;传送门 基本环境准备 WINR 输入cmd回车打开cmd&#xff0c;登录mysql: mysql -h localhost -u root -p然后输入密码回车即可。 创建用户名为testuser1&#xff1a; CREATE USER testuser1…

JDBC连接sql server数据库

IDEA使用JDBC连接Sqlserver数据库 在IDEA的项目中添加对应数据库的jar包 在项目中创建util包和DBUtil类用来存放数据库连接的java代码。 完整代码 package com.hnpi.util;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; …

Python MySQL创建表

目录 一、创建表 二、检查表是否存在 三、关键字 一、创建表 在库student环境下创建表名为stu: # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root", #默认用户名password"123456"…

JDBC连接 Mysql数据库

IDEA使用JDBC连接Mysql数据库 在项目中添加连接Mysql数据库的jar包 在项目中创建util包和DBUtil类用来存放数据库连接的java代码。 完整代码 package com.zsh.util;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import…

Python MySQL插入表

目录 1.插入表格 2.插入多行 3.获取插入的 ID 1.插入表格 要在 MySQL 中填充表&#xff0c;请使用“INSERT INTO”语句。 “stu”表中添加一条记录&#xff1a; 代码&#xff1a; # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认…

Python MySQL选择

目录 1.从表中选择 2.选择列 3.使用 fetchone() 1.从表中选择 要从 MySQL 中的表中进行选择&#xff0c;请使用“SELECT”语句。从“stu”表中选择所有记录&#xff0c;并显示结果&#xff1a; # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhos…

Eclipse编辑器字体大小的设置

我们在第一次使用 Eclipse 编写程序时&#xff0c;由于 Eclipse 默认使用的是 Cosnolas 字体&#xff0c;字号为 10&#xff0c;所以编辑器中的字体非常小&#xff0c;不方便查看。 我们可以通过下面所示的方法来修改编辑器的字体大小。 操作方法&#xff1a; 1 . 选择“窗口…

Python MySQL查询在哪里(where)

目录 一.用过滤器选择 二.通配符 三.防止 SQL 注入 一.用过滤器选择 从表中选择记录时&#xff0c;可以使用“WHERE”语句过滤选择。例如&#xff1a;选择名字为”笨小孩“的记录&#xff1a;结果&#xff1a; # codinggbk #连接 import pymysqlmydb pymysql.connect(hos…

Python MySQL排序

目录 顺序排序 按 DESC逆序排序 顺序排序 使用 ORDER BY 语句按升序或降序对结果进行排序。ORDER BY 关键字默认对结果进行升序排序。要按降序对结果进行排序&#xff0c;请使用 DESC 关键字。 按名称的字母顺序对结果进行排序&#xff1a; # codinggbk #连接 import pymys…

Python MySQL删除

目录 删除记录 防止 SQL 注入 删除记录 您可以使用“DELETE FROM”语句从现有表中删除记录。例如删除地址为“笨小孩”的任何记录&#xff1a; # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root&q…

Java是如何实现跨平台的,原理是什么?

跨平台&#xff0c;是指java语言编写的程序&#xff0c;一次编译后&#xff0c;可以在多个系统平台上运行。 实现跨平台&#xff1a;Java程序是通过java虚拟机在系统平台上运行的&#xff0c;只要该系统可以安装相应的java虚拟机&#xff0c;该系统就可以运行java程序。&#…

Python MySQL更新表

目录 更新表 防止 SQL 注入 更新表 您可以使用“UPDATE”语句更新表中的现有记录。将地址栏从“Valley 345”改写为“Canyoun 123”&#xff1a; # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root…

Python MySQL合并

目录 创建新表 表中添加数据 连接两个或多个表 左连接 右连接 创建新表 创建表名为product # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root", #默认用户名password"123456",…

如何用记事本编写运行java程序?

我们在安装好JDK和配置好环境变量后&#xff0c;许多人使用编译器编写程序而不会使用记事本编写运行java程序&#xff0c;下面就给大家讲解一下使用记事本编写运行java程序。 1.首先&#xff0c;要保证环境变量配置完成。组合键<WinR>打开运行命令框。 2.输入CMD进入命…