社区
C语言
帖子详情
请问C语言怎么写文件到指定行啊
liuyang1943
2009-06-11 11:21:36
比如我想向a.txt文件的第10行写入“hello”并覆盖之前第十行的内容,用C语言的话应该怎么做啊?哪位高人指点下,最好能给出相关代码
...全文
1180
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)
c
写
文件
的时候从
指定
行
开始
写
本文介绍如何使用
C语言
从
指定
行
开始
写
入
文件
,通过r+模式打开
文件
,利用fgetc和fseek函数定位到特定
行
,再进
行
写
操作。适用于需要在现有
文件
中插入数据的场景。
C语言
文件
操作在
指定
行
插入数据
本文介绍了一种在
C语言
中实现
文件
指定
行
删除与插入的方法,通过先读取再逐
行
写
回的方式实现
行
级别的编辑操作。具体步骤包括读取
文件
内容到内存、对内存中的数据进
行
修改以及将修改后的数据
写
回
文件
。
C读
写
文件
插入删除
指定
行
,C++读
写
文件
插入删除
指定
行
这段代码展示了如何使用C++和
C语言
来实现
文件
中的特定
行
删除及追加功能。C++代码通过`ifstream`和`ofstream`删除
指定
行
,而
C语言
代码则使用`fopen`, `fgets`和`fputs`完成相同操作。两段代码都首先读取
文件
,然后根据条件决定是否删除或追加
行
,最后将处理后的数据
写
回
文件
。
c语言
文件
删除修改配置
文件
指定
内容
本文介绍了如何使用
C语言
在Linux操作系统中删除配置
文件
的
指定
内容,并进
行
文件
内容的修改。通过标准库函数,演示了读取
文件
、搜索目标字符串、删除
指定
行
及
写
回
文件
的过程。
C语言
中的
文件
操作(三)
该博客介绍了
C语言
中的
文件
操作,重点讲解了fputs和fgets函数。fputs用于文本
行
输入/
写
,需
指定
要输入的字符串和存放的
文件
;fgets用于字符串输入/
写
,读取字符个数有规则,还会根据
文件
内容
行
数情况读取。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章