typedef unsigned char byte; + j. U+ u0 Q |6 h& u+ Q
struct NameCard + V* P( Z. h6 d$ Y4 h! ^5 @
{
# Z5 a. I- M5 m$ I, F a' D) \& Dint index; * r9 Q; J& u/ P" x; a% \' ?
byte *name;
$ _" V) M: h, O) `NameCard *next;
1 r/ O- d8 L& r; {8 ]# u4 R.....
- D& I. T( {7 W5 q}*NameCard_Point;
- `$ n1 y( X C+ ?$ J6 L5 ENameCard *next是一个结构指针,你可以用它来保存下一个结构的指针(在内存中。)
3 G1 u, o8 X& r( \! O! o: O( @7 D+ j3 V; ]: a
当然,如果你要保存在文件中,那么这个变量可以不要。1 j5 r& e, j6 S! o
如果你要保存到文件中,那么你可以用下面的结构。
R g) F6 _1 Rstruct NameCardf " D$ j' [$ R, o6 }+ Y
{
. G( Z2 p/ h' Z- Vint NameCardLen;//整个Namecard的长度,包括name,addr等。5 q6 }& _0 i4 ^. Z- H1 r7 y
bool delete;//是否已经被删除8 F3 i" a& p- v# H. A
int index; //索引( n1 S, d# n' }7 d3 X
int namelen;//用户名的长度。
" S! E# R" y, \, Rint addrlen;//地址资料的长度。' u9 a1 l; P) ]' g+ s
.....
$ |* {* t- _* A/ K% D Z# q}; ! C0 W3 a# n% u! \6 y! n; r$ C& d1 H
8 A9 m: Z( `9 S/ U
你先把这个结构存入文件。) A$ a/ K6 O1 F$ g% [# q0 x
然后写入namelen长度的用户名。$ d2 c& j/ ?# K: ~3 D( G! t2 \
再写入addrlen长度的用户地址资料。
5 O) S) }0 a! [7 Y, P0 w2 Y& ~....( N6 B2 \% y% f- a
当然读出资料的时候也要按顺序来读。
4 N! u9 K( p8 I d/ _9 J8 M$ z5 W# M3 d/ V
如果要添加一个用户资料。就在文件尾部添加。
2 z+ G& @$ ]/ P [如果要删除一个用户资料,就把delete标志写为true就可以了。
! B, m; F" P: ^8 k5 S3 k
: _. q' \% M6 `# {3 x% i% Z U当然在多次删除操作以后,文件内部会出现很多空余的地方。
1 B7 F% q! x( W你可以在写一个压缩功能,类试outlook一样。1 R. V: c) t2 g1 z' M& S* o
把所有的有效数据读出来,再写一边就可以了。
o. g* G, z. i2 L7 F