社区
C语言
帖子详情
请问C语言怎么写文件到指定行啊
liuyang1943
2009-06-11 11:21:36
比如我想向a.txt文件的第10行写入“hello”并覆盖之前第十行的内容,用C语言的话应该怎么做啊?哪位高人指点下,最好能给出相关代码
...全文
1169
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...
02功能之读
写
文件
流操作(
C语言
实现读取
文件
指定
一
行
)
02功能之读
写
文件
流操作(
C语言
实现读取
文件
指定
一
行
) 1
C语言
读取
文件
指定
一
行
// 读取
文件
指定
一
行
int ReadLine1(const char *fileName, char outBuf[], int n){ int whichLine = n; //
指定
要读取哪一
行
int ...
c语言
在
文件
指定
地方添加字符,
C语言
文件
操作在
指定
行
插入数据
C语言
文件
操作有覆盖和追加两种模式,但不提供插入模式。所以要在
文件
中
指定
行
进
行
删除或者插入,需要按照如下流程操作:1、以只读打开
文件
;2、将
文件
逐
行
读入到内存中;3、关闭
文件
;4、在内存中对
指定
行
插入或者...
C语言
文件
操作在
指定
行
插入数据
C语言
文件
操作有覆盖和追加两种模式,但不提供插入模式。所以要在
文件
中
指定
行
进
行
删除或者插入,需要按照如下流程操作: 1、以只读打开
文件
; 2、将
文件
逐
行
读入到内存中; 3、关闭
文件
; 4、在内存中对
指定
行
...
C语言
文件
操作(
文件
读
写
)
本文主要介绍
C语言
中
文件
操作的相关内容(例:
文件
读、
写
等相关函数)。 一、
文件
在对计算机的使用中我们几乎离不开
文件
。例如常见的有word 文档,txt文本
文件
,图片
文件
、音频
文件
等。 1.什么是
文件
?
文件
是以...
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章