• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言 以字符串的形式读写文件详解及示例代码

C语言 以字符串的形式读写文件详解及示例代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言代码示例,c语言简单代码示例,c语言流程图示例,c语言示例程序,json字符串示例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

fgetc() 和 fputc() 函数每次只能读写一个字符,速度较慢;实际开发中往往是每次读写一个字符串或者一个数据块,这样能明显提高效率。

读字符串函数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);
</div>

表示从 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 ){
    printf("Cannot open file, press any key to exit!\n");
    getch();
    exit(1);
  }
  
  while(fgets(str, N, fp) != NULL){
    printf("%s", str);
  }
  fclose(fp);
  system("pause");
  return 0;
}
</div>

将下面的内容复制到 D:\\demo.txt:

C语言中文网
http://c.biancheng.net
一个学习编程的好网站!

那么运行结果为:

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

写字符串函数fputs

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

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

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

char *str = "http://c.biancheng.net";
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 ){
    printf("Cannot open file, press any key to exit!\n");
    getch();
    exit(1);
  }
  printf("Input a string:");
  gets(strTemp);
  strcat(str, "\n");
  strcat(str, strTemp);
  fputs(str, fp);
  fclose(fp);
  return 0;
}
</div>

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

C语言中文网
http://c.biancheng.net
一个学习编程的好网站!
C C++ Java Linux Shell

以上就是 C语言字符串的形式读取文件,后续继续整理相关资料,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言代码中调用C++代码的方法示例
  • C语言 文件的随机读写详解及示例代码
  • C语言 以字符串的形式读写文件详解及示例代码
  • C语言 以字符形式读写文件详解及示例代码
  • C语言 文件的打开与关闭详解及示例代码
  • C语言 位运算详解及示例代码
  • C语言 结构体和指针详解及简单示例
  • C语言 结构体数组详解及示例代码
  • C语言 指针数组详解及示例代码
  • C语言 二级指针详解及示例代码

相关文章

  • 2017-05-28C语言数据结构 双向链表的建立与基本操作
  • 2017-05-28c语言实现词频统计的简单实例
  • 2017-05-28浅析C++中memset,memcpy,strcpy的区别
  • 2017-05-28C++ new、delete(new[]、delete[])操作符重载需要注意的问题
  • 2017-05-28C语言字符串原地压缩实现方法
  • 2017-05-28详解C++中的对象指针与对象数组
  • 2017-05-28深入C++浮点数无效值定义与判定的解决办法
  • 2017-05-28概述C++中的 public protected private friend关键字的用法
  • 2017-12-31数据结构 哈希表设计
  • 2017-05-28C++设计模式之外观模式

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++之类的静态变量
    • C++中宏的使用问题详解
    • C++实现判断字符串是否回文实例解析
    • C实现的非阻塞方式命令行端口扫描器源码
    • c++中堆栈及创建对象示例代码
    • 深入理解C++移位运算符
    • 采用C++实现区间图着色问题(贪心算法)实例详解
    • C++/Php/Python/Shell 程序按行读取文件或者控制台的实现
    • 编写C语言程序进行进制转换的问题实例
    • VC6.0代码自动提示 VC6.0在win7环境下代码提示智能化

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有