假定一行不超过1000字符,
删去第3行,L=3.
输入输出文件名
a.txt
#include<stdio.h>
void
main()
{
FILE
*fin
fpos_t
pos_w,pos_r,pos
int
i,k,L=3
char
*one_line
one_line
=
(char
*)
malloc(1000*sizeof(char))
fin
=
fopen
("a.txt","rb+")
for
(i=1i<Li++)
fgets(one_line,999,fin)
fgetpos
(fin,&pos_w)
fgets(one_line,999,fin)
//
delete
fgetpos
(fin,&pos_r)
pos
=
pos_r
while
(1
==
1)
{
fsetpos
(fin,&pos)
if
(fgets(one_line,999,fin)
==NULL)
break
fgetpos
(fin,&pos_r)
pos
=
pos_w
fsetpos
(fin,&pos)
fprintf(fin,"%s",one_line)
fgetpos
(fin,&pos_w)
pos
=
pos_r
}
pos
=
pos_w
fsetpos
(fin,&pos)
k
=
strlen(one_line)
for
(i=0i<ki++)
fputc(0x20,fin)
fclose(fin)
}
可以用c语言的fseek()函数(stdio.h),...随机读写要知道, 一个文件打开后有一个位置指针, 指示当前读写位置..
顺序读写时, 读写一个, 系统自动把位置指针移动到下一位置...
用fseek()就可以手动更改..
用法是fseek(FILE*(文件指针),long offset(偏移量),int whence(参考位置))
参考位取值:0 文件开头, 1 当前位置, 2 文件最后..
作用就是将FILE*指定的文件的位置指针从参考位置移动offset字节
移动方向由offset的+/-决定..
另外用rewind()可以将位置指针恢复到文件头..