社区
C语言
帖子详情
请问C语言怎么写文件到指定行啊
liuyang1943
2009-06-11 11:21:36
比如我想向a.txt文件的第10行写入“hello”并覆盖之前第十行的内容,用C语言的话应该怎么做啊?哪位高人指点下,最好能给出相关代码
...全文
1112
23
打赏
收藏
请问C语言怎么写文件到指定行啊
比如我想向a.txt文件的第10行写入“hello”并覆盖之前第十行的内容,用C语言的话应该怎么做啊?哪位高人指点下,最好能给出相关代码
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lee673
2009-06-11
打赏
举报
回复
用fseek函数先置文件内部指针到指定位置,在写入就行了吧
goodname
2009-06-11
打赏
举报
回复
长度固定,直接写就行。
liuyang1943
2009-06-11
打赏
举报
回复
需要2个文本文件吗?如果在只有一个TXT文件的情况下能实现吗?我的每一行内容长度都是固定的。长度为4,请问能不增加其他文件的情况下实现只修改第10行内容吗?
机智的呆呆
2009-06-11
打赏
举报
回复
移动文件指针到指定的位置,然后写新的内容~~~~
ameyume
2009-06-11
打赏
举报
回复
[Quote=引用 2 楼 forwrj 的回复:]
文本文件的换行是两个字符\r\n
如:
文件源文件为1.txt内容如下:
11111\r\n
22222\r\n
......\r\n
999999\r\n
ABCDEF\r\n
..........
操作如下:
1.创建文件2.txt
2.按字节读取文件1.txt并一个字节一个字节的写到2.txt中,直到读到了9次\r\n
3.接下来再读1.txt并读到\r\n为止(如果读不到\r\n说明第十行是最后一行),但这些的字节不要写到2.txt中,把"hello"写到2.txt中去就可以了
4.如果文件只有10行,到这…
[/Quote]
up
forwrj
2009-06-11
打赏
举报
回复
这相本来就只改第10行呀
allen1986
2009-06-11
打赏
举报
回复
文件操作,一般可以移动指针,指向你想要重写的地方。
long lseek(int handle, long offset, int fromwhere)
函数功能: 移动文件位置指针到指定位置 。
然后就是替换字符窜了。
具体怎么替换,可以象楼上说的保存后面的内容再重写,或着你能想到其他的更好的方法当然好了,
forwrj
2009-06-11
打赏
举报
回复
这时2.txt就是你所要的文件
代码就不写了,编程的最重要的是思想.
liuyang1943
2009-06-11
打赏
举报
回复
能不能只修改第10行的内容,其他行的内容不变呢
forwrj
2009-06-11
打赏
举报
回复
文本文件的换行是两个字符\r\n
如:
文件源文件为1.txt内容如下:
11111\r\n
22222\r\n
......\r\n
999999\r\n
ABCDEF\r\n
..........
操作如下:
1.创建文件2.txt
2.按字节读取文件1.txt并一个字节一个字节的写到2.txt中,直到读到了9次\r\n
3.接下来再读1.txt并读到\r\n为止(如果读不到\r\n说明第十行是最后一行),但这些的字节不要写到2.txt中,把"hello"写到2.txt中去就可以了
4.如果文件只有10行,到这结果,关闭文件
5.如果文件不止10行,把1.txt余下的内容读写到2.txt中去,关闭打开的文件.
goodname
2009-06-11
打赏
举报
回复
像这种问题一般都是从第10行开始重写以后所有的东西。
你找到第10行,然后保存下面的内容到内存中,如果是很大的文件的话。
然后写入新的第10行,然后将保存到内存的东西追加到后面。
liuyang1943
2009-06-11
打赏
举报
回复
看来是我的编译器出问题了,同样的程序,我用arm-linux-gcc编译就能通过,用gcc编译就会出现
/usr/bin/ld:error while loading shared libraries:libdl.so.2:ELF file OS ABI invalid的错误。郁闷
liuyang1943
2009-06-11
打赏
举报
回复
FILE *fp = open(argv[1], "rb+");
iseek(fp, 5*linenum, SEEK_SET);
我这样改了还是一样的错误啊。。。
猫已经找不回了
2009-06-11
打赏
举报
回复
[Quote=引用 19 楼 liuyang1943 的回复:]
我编译都没过啊。。
他是在windiws下跑过了的,我在linux下就不行了,出现了上面的错误。。。。
[/Quote]
试下open跟lseek
ItchIt
2009-06-11
打赏
举报
回复
fseek(fp, 5*linenum, SEEK_SET); // 5表示每行为4位,另外一位为换行符
fwrite(argv[3], len(argv[3]),1, fp);
貌似write 不能seek的,seek对write不管用
文件是流,要写的话只有append或者全部覆盖
可以用一个临时文件,按行写,写到第九行的时候滤掉第十行,写入新数据,再继续写完原文件,然后重命名临时文件
(我新手,说错了不准骂我)
liuyang1943
2009-06-11
打赏
举报
回复
我编译都没过啊。。
他是在windiws下跑过了的,我在linux下就不行了,出现了上面的错误。。。。
猫已经找不回了
2009-06-11
打赏
举报
回复
你是linux环境吗?
换成opne跟lseek系列看看。
猫已经找不回了
2009-06-11
打赏
举报
回复
你的运行代码的入参。贴来看看。
wesleyluo
2009-06-11
打赏
举报
回复
楼上的你用什么编译器啊?
感觉没问题。
liuyang1943
2009-06-11
打赏
举报
回复
#include <string.h>
#include <stdio.h>
int main(int argc, char *argv)
{
char linebuf[10];
int linenum=0;
int stderr;
if (argc <4)
{
fprintf(stderr, "usage: %s <file> linenumber string \n", argv[0]);
return -1;
}
FILE *fp = fopen(argv[1], "rb+");
if(!fp)
{
fprintf(stderr, "cannot open %s\n", argv[1]);
return -1;
}
if(argv[2] < 0)
{
fprintf(stderr, "linenumber cann't be negative.");
return -1;
}
else
{
linenum = argv[2];
}
fseek(fp, 5*linenum, SEEK_SET); // 5表示每行为4位,另外一位为换行符
fwrite(argv[3], len(argv[3]),1, fp);
fclose(fp);
return 0;
}
hairetz兄,上面是朋友给的代码,我编译却出现libdl.so.2: ELF file OS ABI invalid的错误,为什么呢?
加载更多回复(3)
220个经典
C语言
源码
220个经典
C语言
源码 从简单到难的220来个经典C程序 第一部分 基础篇 001 第一个C程序 002 运
行
多个源
文件
003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 自增/自减运算 008 数列求和 009 乘法口诀表 010 猜数字游戏 011 模拟ATM(自动柜员机)界面 012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找
指定
元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符
行
排版 030 字符排列 031 判断字符串是否回文 032 通讯录的输入输出 033 扑克牌的结构表示 034 用“结构”统计学生成绩 035 报数游戏 036 模拟社会关系 037 统计
文件
的字符数 038 同时显示两个
文件
的内容 039 简单的文本编辑器 040
文件
的字数统计程序 041 学生成绩管理程序 。。。。 。。。。
02功能之读
写
文件
流操作(
C语言
实现读取
文件
指定
一
行
)
02功能之读
写
文件
流操作(
C语言
实现读取
文件
指定
一
行
) 1
C语言
读取
文件
指定
一
行
// 读取
文件
指定
一
行
int ReadLine1(const char *fileName, char outBuf[], int n){ int whichLine = n; //
指定
要读取哪一
行
int currentIndex = 1; //当前读取的
行
char buf[1024] = { 0 }; //临时 不能做返回值 防
C语言
学生信息管理系统
课程名称:
C语言
控制台版信息管理系统应用知识:
C语言
,链表课程目的:1、练习
C语言
知识综合运用2、巩固复习链表应用3、巩固
C语言
基础知识4、掌握控制台游戏基本方法代码数量:1000左右课程特点:1、知识点讲解细致入微2、代码一
行
一
行
带大家
写
,
写
一
行
讲一
行
。绝不会拿
写
好的代码讲解。3、保证带大家
写
出一个完整的有价值的小项目课时目录:1、项目介绍2、设置控制台光标位置3、登录界面4、用户登录操作的三个小界面以及倒计时5、用户注册操作的三个界面以及倒计时6、倒计时函数封装7、用户名密码
写
入
文件
8、游客、退出、指令有误界面9、读
文件
匹配用户名密码10、用户登录菜单实现11、注册,退出,指令失败,默认菜单实现12、管理主菜单13、退出系统与指令失败14、输入学生信息界面15、双向循环链表的尾添加16、产生学号与释放链表17、保存学生信息进
文件
18、读
文件
进链表里19、查看所有学生的信息20、输出
指定
学生的信息21、输出
指定
范围的同学信息22、删除信息界面23、删除
指定
同学信息24、修改
指定
学生的信息25、考试26、以成绩顺序排序,以学号顺序排序
c语言
在
文件
指定
地方添加字符,
C语言
文件
操作在
指定
行
插入数据
C语言
文件
操作有覆盖和追加两种模式,但不提供插入模式。所以要在
文件
中
指定
行
进
行
删除或者插入,需要按照如下流程操作:1、以只读打开
文件
;2、将
文件
逐
行
读入到内存中;3、关闭
文件
;4、在内存中对
指定
行
插入或者删除;5、以只
写
打开
文件
;6、将修改后的数据
写
入
文件
;7、关闭
文件
。参考代码:假定
文件
最多10
行
,执
行
删除第2
行
,并在原第8
行
中插入一
行
数据为例,代码如下:#include #include #i...
C语言
文件
操作(
文件
读
写
)
文章目录前言一、
文件
1.什么是
文件
?2.
文件
名二、
文件
的打开和关闭1.
文件
指针2.
文件
的打开与关闭三、
文件
的顺序读
写
总结 前言 本文主要介绍
C语言
中
文件
操作的相关内容(例:
文件
读、
写
等相关函数)。 一、
文件
在对计算机的使用中我们几乎离不开
文件
。例如常见的有word 文档,txt文本
文件
,图片
文件
、音频
文件
等。 1.什么是
文件
?
文件
是以计算机硬盘为载体存储在计算机上的信息集合。是数据源的一种,最主要的作用是保存数据。 在程序设计中,我们可将
文件
分为两大类:程序
文件
和数据
文件
(1)程序
文件
包.
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章