• 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语言替换文件中某一行的方法

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

jfkidear 通过本文主要向大家介绍了c语言读取文件一行,c语言删除文件一行,c语言删除文件某一行,c语言修改文件某一行,c语言返回上一行等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

文件中存贮的内容如下所示:

11    1122     0    1122     *     *     0     0 
22    222     0    222     *     *     0     0 
33    333     0    333     *     *     0     0  
</div>

通过使用下面的几个函数,fopen,fprintf,fscanf,fseek,ftell 。

具体的函数函数原型如下所示:

FILE*fopen(const char*filename,const char *mode); 
int fprintf(FILE*stream,const char *format,...) 
int fscanf(FILE* stream,const char *format,...) 
int fseek(FILE*stream,long offset,int origin) 
long ftell(FILE* stream) 
</div>

首先,数据写入到文件中的是追加的形式。

具体的写入代码如下所示:

主要写入时要指定每个数据的宽度,若不指定,当修改某行的数据,修改后的长度大于修改前得长度,将影响文件中的下一行。制定宽度之后,只要修改后的长度不大于制定的宽度,都不影响下面的内容。(这是注意点)

FILE *fp=fopen("clientinfo.txt","ar+"); 
Clientinfo info; 
memset(&info,0,sizeof(Clientinfo)); 
。。。。 
。。。。/*完成对info结构体的赋值*/ 
fprintf(fp,"%10s %10s %10d %10s %10s %10s %10d %10d",info.id,info.nickname,\ 
    info.online,info.pwd,info.encryp,info.ip,info.port,info.fd); 
fprintf(fp,"\n"); 
fclose(fp); 
</div>

修改处的代码如下所示,整个代码是我在MFC中实现的: 

FILE *fp=fopen("clientinfo.txt","r+"); 
Clientinfo info; 
long nline=0,n; 
memset(&info,0,sizeof(Clientinfo)); 
int oldline=0;/*记录匹配位置的前一行的偏移量*/ 
CString str; 
while((n=fscanf(fp,"%s %s %d %s %s %s %d %d",info.id,info.nickname,\ 
    &info.online,info.pwd,info.encryp,info.ip,&info.port,&info.fd))!=EOF) 
{   
   str.Format("%d",nline); 
   MessageBox(str); 
   if(strncmp(info.id,id,id.GetLength())==0)/*查找要修改的位置*/ 
   { 
   oldline=nline; 
   break; 
   } 
   nline=ftell(fp); 
} 
 
fseek(fp,oldline,SEEK_SET);/*定位到要修改的位置,注意,这个位置是上一次读的最后,故写的时候要先写换行,第一行除外*/ 
  if(oldline!=0) 
  { 
   fprintf(fp,"\n"); 
  } 
  fprintf(fp,"%10s %10s %10d %10s %10s %10s %10d %10d",info.id,info.nickname,\ 
    info.online,info.pwd,info.encryp,info.ip,info.port,info.fd); 
  fprintf(fp,"\n"); 
  fclose(fp); 
</div>

下面是修改后的数据,修改第二行,没有影响前后的数据。  

    11    1122     0    1122     *     *     0     0 
    22    222f     0    222f     *     *     0     0 
    33    333     0    333     *     *     0     0
</div>

总结

利用C语言替换文件中某一行的方法到这就基本结束了,大家都学会了吗?希望这篇文章的内容对大家的学习和工作能带来一定的帮助,如果有疑问,大家可以留言交流。

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

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

  • 利用C语言替换文件中某一行的方法

相关文章

  • 2017-05-28解析C++编程中的#include和条件编译
  • 2017-12-31素数筛选法
  • 2017-05-28深入分析C++中执行多个exe文件方法的批处理代码介绍
  • 2017-05-28DHCP:解析开发板上动态获取ip的2种实现方法详解
  • 2017-05-28利用简洁的C语言代码解决跳台阶问题与约瑟夫环问题
  • 2017-05-28strcpy函数实现简示例命分享
  • 2017-05-28初学C++之自定义类型名简化详解
  • 2017-05-28c语言实现单链表算法示例分享
  • 2017-05-28C语言打印杨辉三角示例汇总
  • 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++短路求值(逻辑与、逻辑或)实例
    • 在Linux下编译C或C++程序的教程
    • 使用C++制作简单的web服务器
    • C语言中求余弦值的相关函数总结
    • C++空类及没有成员变量的类的大小实例分析
    • C语言实现奇数阶魔方阵的方法
    • C++中的vector容器对象学习笔记
    • 概率的问题:使用递归与多次试验模拟的分析
    • 详解C++编程中的嵌套类的声明与其中的函数使用
    • C++多继承同名隐藏实例详细介绍

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

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