C语言,删除一行

Python011

C语言,删除一行,第1张

删除文件里的一行内容,后面的行向前移动一行,清空最后一行,程序如下:

假定一行不超过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()可以将位置指针恢复到文件头..