typedef unsigned char byte; 9 @/ P( m* L! y* R, {2 F
struct NameCard
: U, ~) o! u* s p{
! m$ y( l; ~0 M5 v' I& E* rint index;
6 i: K% Y% U4 u6 b) ybyte *name;
/ M* ^7 E0 l) m. @' }NameCard *next; 5 d2 ?8 C7 ~. U! {
..... ' F, u! v- T' }" p/ W" g
}*NameCard_Point; 8 v) Y* k) c+ L: n+ w0 Q
NameCard *next是一个结构指针,你可以用它来保存下一个结构的指针(在内存中。)
' N9 I* L. A3 A* i( B2 [- E, A" h4 j( @0 l: Q5 W/ }, r) X- N
当然,如果你要保存在文件中,那么这个变量可以不要。' i4 T/ x( l& w {1 I4 U
如果你要保存到文件中,那么你可以用下面的结构。
$ k* V# E2 }/ ~3 m( D$ q8 e6 I2 xstruct NameCardf - ^8 B7 n C9 k1 f8 p1 Q6 e! c+ m
{
. B3 i$ v7 Y& ^% `* L% _int NameCardLen;//整个Namecard的长度,包括name,addr等。
+ f- u# Q/ U1 X- }& nbool delete;//是否已经被删除3 a& y% G- g/ a
int index; //索引
% [- I7 }9 v5 ^) c& y; m7 d6 K% @' ^int namelen;//用户名的长度。6 a# ^' }2 U% r- ~
int addrlen;//地址资料的长度。
! g. K" Y7 s; m: V; u) I..... # x. O4 V$ s- S* A0 M$ L3 Z
};
! k1 q- v( D3 o* k8 Q* j* v9 r( R6 S4 E/ N# Z: m) x# k
你先把这个结构存入文件。2 X% A1 n# u( r7 Q( }: [" {5 ^1 ~
然后写入namelen长度的用户名。
" N ]! z4 v. r+ s5 X& J: F再写入addrlen长度的用户地址资料。, w1 r" p" V- \
....
) P1 b5 T$ Q: B- n3 {6 C' m# m当然读出资料的时候也要按顺序来读。* z# i2 S. K5 g$ Y
+ M+ a- |5 c; x3 N, a8 v- s
如果要添加一个用户资料。就在文件尾部添加。
, b H2 p- m0 ?4 x* }8 i如果要删除一个用户资料,就把delete标志写为true就可以了。
8 r9 r# F( Z8 j9 `$ ?4 K) u4 l1 Y5 A5 t2 _0 K
当然在多次删除操作以后,文件内部会出现很多空余的地方。
4 s$ H9 N6 T H3 ^/ E/ y. o你可以在写一个压缩功能,类试outlook一样。& J, A( y6 {: A3 V6 U r
把所有的有效数据读出来,再写一边就可以了。
% ~& B" f# ], P* R. N- k3 h6 b