当前位置: 技术问答>linux和unix
高分请教:追加写文件
来源: 互联网 发布时间:2015-06-18
本文导语: 我要写日志文件 每行作为一个单元 新增记录就写在下一行 就是说一行一个记录 我想问大家的是: 1、怎样在打开文件之后在新的一行写一条新的记录? 2、一行...
我要写日志文件 每行作为一个单元 新增记录就写在下一行 就是说一行一个记录 我想问大家的是:
1、怎样在打开文件之后在新的一行写一条新的记录?
2、一行最多能写多少个字符
3、这样追加写记录是不是可以一直写到很大?应该没有限制吧?
大家能帮我回答哪个问题都行,谢谢!
1、怎样在打开文件之后在新的一行写一条新的记录?
2、一行最多能写多少个字符
3、这样追加写记录是不是可以一直写到很大?应该没有限制吧?
大家能帮我回答哪个问题都行,谢谢!
|
你用的是纯linux么? 我在redhat 9下测试通过,如果你用的是虚拟机 可能问题出在那里 试试看!
|
1.fopen(filename, "a");
r or rb
Open file for reading.
w or wb
Truncate to zero length or create file for writing.
a or ab
Append; open or create file for writing at end-of-
file.
r+ or rb+ or r+b
Open file for update (reading and writing).
w+ or wb+ or w+b
Truncate to zero length or create file for update.
a+ or ab+ or a+b
Append; open or create file for update, writing at
end-of-file.
2.取决于你什么时候写入换行符
3.取决于文件系统的限制
r or rb
Open file for reading.
w or wb
Truncate to zero length or create file for writing.
a or ab
Append; open or create file for writing at end-of-
file.
r+ or rb+ or r+b
Open file for update (reading and writing).
w+ or wb+ or w+b
Truncate to zero length or create file for update.
a+ or ab+ or a+b
Append; open or create file for update, writing at
end-of-file.
2.取决于你什么时候写入换行符
3.取决于文件系统的限制
|
我执行你的代码是成功追加到log文件尾部的。
|
给个例子:
void test111()
{
FILE *fp;
time_t t;
if ((fp = fopen("/root/reboot.log","a")) >= 0)
{
t = time(0);
fprintf(fp,"System reboot because SIGSEGV signal at %s",asctime(localtime(&t)));
fclose(fp);
}
}
void test111()
{
FILE *fp;
time_t t;
if ((fp = fopen("/root/reboot.log","a")) >= 0)
{
t = time(0);
fprintf(fp,"System reboot because SIGSEGV signal at %s",asctime(localtime(&t)));
fclose(fp);
}
}
|
用“a”打开就可以了。
naiad(water)的码是对的
naiad(water)的码是对的
|
SEEK到文件的END,再写.日志很大可以用分卷技术.就是拆开.....log.0 log.1...
在LINUX有一个命令叫logroate??可以实现分卷
在LINUX有一个命令叫logroate??可以实现分卷
|
没错。好好看看fopen的手册。
|
每次写得时候先定位,用SEEK将定位到文件的END,这样就可,否则就是每次写的时候把前面的记录覆盖了