- 在线时间
- 0 小时
- 最后登录
- 2007-9-23
- 注册时间
- 2004-9-10
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 9975 点
- 威望
- 7 点
- 阅读权限
- 150
- 积分
- 4048
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1893
- 主题
- 823
- 精华
- 2
- 分享
- 0
- 好友
- 0

我的地盘我做主
该用户从未签到
 |
< align=center><FONT color=#0000ff size=3><B><FONT color=#cc0000>函数大全(m开头)</FONT></B></FONT></P>& `8 T1 |2 z" |
< align=left><FONT color=#ff0000>main()主函数
, F/ [ |0 w# H2 l+ U( L3 Y% p</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某 + }4 r' Z) I* n* k; b5 s
个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 + \/ t ^8 M9 M# ?4 x
在哪个地方, 以下几点说明都是适合的。 , g( x" t- M/ p& G
<FONT color=#000099>1. main() 参数 </FONT>8 g" t6 `0 A; y+ H
在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
, s+ k5 U2 ~; a2 ^- n' d* argc: 整数, 为传给main()的命令行参数个数。
4 e) V) ~" R' N. g, ?* argv: 字符串数组。 $ T( K2 Z( T! U3 F5 z9 E
在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0 9 G1 U* A! o* L1 m# P5 S
以下的版本, argv[0]为空串("") 。 7 O, u: |/ w# Q
argv[1] 为在DOS命令行中执行程序名后的第一个字符串; 5 N% p/ G" y& U' Q8 V1 H8 O
argv[2] 为执行程序名后的第二个字符串;
8 E! }- f! z) ?, s... # W/ @4 u) [* J- `9 j
argv[argc]为NULL。
3 A3 N7 i# c, O6 X+ ^& @*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符 0 g9 e6 k/ Z& v6 R
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C: ! C# Q8 Q# \/ ]9 x+ H, Z
\TURBOC(对于PATH) 或YES(对于87)。 * I+ Y) g( y3 j0 c- c& ~
Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中 / w2 s5 G6 }: g2 E2 v5 s, [
说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序 1 e4 d3 X5 |2 P8 g
的局部变量。 * t- K! Q4 v& O) h& H& r
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
" j8 M; @) v+ F, D1 l! D的例子: $ {& D1 |0 f9 A
<FONT color=#0000ff>main()
4 M) s0 [ B4 N$ j. Rmain(int argc) 4 R2 V- n* j$ c+ u0 k* t: k o
main(int argc, char *argv[])
, l) R: i' W) `& c. h( M; Q, `5 _main(int argc, char *argv[], char *env[]) </FONT>0 T' n' l8 Q: T/ k! o& d7 r+ w
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不 & |' z, [7 r1 o! ?8 [/ m
用argv[]的情况。
, b: v+ O# R/ d. F, a( L+ E以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
2 l* B# q0 ?5 w: F' i' s<FONT color=#0000ff>/*program name EXAMPLE.EXE*/
( x! k2 _9 o; N4 N- y9 S; C#include <STDIO.H>
! H8 N0 G9 c3 n7 [#include <STDLIB.H>
* [" E0 x. Y1 q( `- v+ L( ]main(int argc, char *argv[], char *env[])
' I3 Y- G+ C+ B- x$ P{
$ i7 `4 w& l( @3 hint i; ' H% C& r( G$ R* w
printf("These are the %d command- line arguments passed to 5 D5 C# e' i$ w. G- a7 u
main:\n\n", argc);
: m0 I. y$ W0 V! P7 _8 Nfor(i=0; i<=argc; i++) + v0 ?+ g" z4 C8 x; q0 j! W, C
printf("argv[%d]:%s\n", i, argv); 6 j0 ^/ S: h0 {+ I7 h
printf("\nThe environment string(s)on this system are:\n\n"); $ `( R/ {; b' o7 o3 Z2 Y7 l5 W9 j
for(i=0; env!=NULL; i++)
6 O/ @* i+ x0 E2 }' T. J/ r! ~/ nprintf(" env[%d]:%s\n", i, env); * q. B* r1 L% b3 C6 S
} </FONT>
5 Y. u1 Y/ H: I如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: ! {; @0 \. Q6 W
C:\example first_argument "argument with blanks" 3 4 "last but ) l- G9 s0 m( |& l' t
one" stop!
# D, ?8 i7 l# Q4 u O* i$ j2 V注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument . j( a4 v7 m2 B& U) D* o
with blanks"和"Last but one")。
( R S0 y7 }2 z% `6 i结果是这样的:
2 r# q4 b l: ?& [+ G<FONT color=#0000ff>The value of argc is 7 6 G) k" o+ I8 z: r$ h3 d9 ^5 f
These are the 7 command-linearguments passed to main: $ s4 Y/ g4 e# g" G/ n7 E1 R) x
argv[0]:C:\TURBO\EXAMPLE.EXE
/ b$ J3 B2 c8 A4 b3 _argv[1]:first_argument 5 c% E$ |: S4 g8 q
argv[2]:argument with blanks * C" I G6 D0 _* b% x
argv[3]:3 ' P1 V. o" o& q1 H
argv[4]:4 % v @' C) B' J
argv[5]:last but one
6 ]( A" w$ v+ v3 Nargv[6]:stop!
- X5 R9 l! ~' F1 t) Q7 w2 O, Aargv[7] NULL)
+ T) n9 M% b/ m, B% ]* lThe environment string(s) on this system are:
) Z) n6 [. A! L# X$ ^( Q+ `env[0]: COMSPEC=C:\COMMAND.COM 0 K! o/ H( P. g8 J/ v; n
env[1]: PROMPT=$P$G /*视具体设置而定*/
( r) I9 L, o/ d: J3 j; D6 wenv[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ ( R+ i5 F) X |' M) A2 d ^
</FONT>; l$ P" t: }* c# w. R0 [+ r
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包 " T! C" ]! C" m+ X+ T
括参数间的空格), 这是由DOS 限制的。 7 ~0 }" w% D! k
</P>$ S) M" p+ |8 R: D/ F5 l
< ><FONT color=#ff0000>函数名: matherr </FONT>
+ @- s8 y! P; y+ |1 R8 J1 h3 ^功 能: 用户可修改的数学错误处理程序
& T/ k2 h0 U8 u9 X( [. p用 法: int matherr(struct exception *e); ' W0 x" i! ?9 C+ N! |
程序例: </P>% i( t6 b' M' T' u2 C$ {* [
< ><FONT color=#0000ff>/* This is a user-defined matherr function that prevents
* ~4 @4 P: _$ F$ Z7 wany error messages from being printed. */ </FONT></P>
. R' s( F; S8 o* m< ><FONT color=#0000ff>#include<MATH.H> </FONT></P>
, O1 A& |2 o5 _, @; w6 O< ><FONT color=#0000ff>int matherr(struct exception *a) ; u( t; z' u3 k4 U* f
{
6 D& b3 c; d/ a) d$ _: w8 j( Dreturn 1; # ?# ]/ F1 K) J' ]& D" X9 X
} + L% j7 O+ e9 D2 g. O8 {
</FONT>
& V& W9 c& G, ?/ x
+ u; O) k9 f/ A8 X% c( h' W</P>
- u8 Q8 x' D- l! s+ ^: p/ P+ ^< ><FONT color=#ff0000>函数名: memccpy </FONT>
( E, N- `7 m5 n* D S" v功 能: 从源source中拷贝n个字节到目标destin中 " b+ [8 |% f; `- I
用 法: void *memccpy(void *destin, void *source, unsigned char ch,
3 W/ q/ ^" Q1 ?" g: v% v- u+ Cunsigned n);
% o5 j. G- z0 X0 `0 O程序例: </P>
+ B" Q# l" c0 H$ l< ><FONT color=#0000ff>#include <STRING.H>: B5 N/ r% g# k& b6 L! {" ~
#include <STDIO.H></FONT></P>
$ U$ k8 s% [' ]< ><FONT color=#0000ff>int main(void)
% g+ b$ ?4 x2 D4 G{ : B) Q+ W: }/ g" L
char *src = "This is the source string";
E+ \2 J* R9 C+ t" I4 Bchar dest[50]; 9 c0 ~9 n5 @, J/ `5 X3 X: X3 F
char *ptr; </FONT></P>
9 l: X# d3 G* H5 F4 q# i) J< ><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>
2 ?; o$ f7 S/ ^< ><FONT color=#0000ff>if (ptr)
7 u9 S, n8 Y8 f u" e7 m{ + M% D; G+ h# E5 p& Y- K
*ptr = '\0';
+ D. M1 ]7 x: ~printf("The character was found: %s\n", dest); 2 R2 a+ {5 k4 J3 `% \7 {7 O! {
}
& P* m3 D1 h4 F4 Q6 ^4 Ielse
% j0 V# k# I7 Vprintf("The character wasn't found\n"); 8 \4 [$ h: Z7 g8 m) p5 S
return 0;
$ D6 E, N2 Q% s. i( `% t} " r, O* j' z3 `. T! }: I8 E9 k) Z
</FONT>
& R& p" u/ |0 ?7 f d# A</P>; x. ~$ ~) Z ~
< ><FONT color=#ff0000>函数名: malloc</FONT>
) k, v2 ?1 k9 o L: c功 能: 内存分配函数 6 K/ r( o/ z: _; X# y
用 法: void *malloc(unsigned size); , W# j2 h2 F4 \' J* u7 a
程序例: </P>
p" S$ p0 N# b; w9 w+ ~) x Z< ><FONT color=#0000ff>#include <STDIO.H>8 r: y8 B# T7 A1 A6 I
#include <STRING.H>
: f/ S+ u" S' u) E6 A$ q#include <ALLOC.H>8 q- z/ D9 x0 W1 O
#include < ROCESS.H></FONT></P>( u) Q4 Y" v3 t# u% j
< ><FONT color=#0000ff>int main(void)
$ D& J" Y% \" Q. c5 D" a{
) z" S( z0 u9 o# n6 z; Bchar *str; </FONT></P>
# D# t& W4 z$ j0 _6 L v7 E< ><FONT color=#0000ff>/* allocate memory for string */ ; i+ I' R! z, w& l' J! a
/* This will generate an error when compiling */ . C6 _$ Z! A+ j0 N
/* with C++, use the new operator instead. */
8 A4 h' v2 V4 Y$ F" P6 Bif ((str = malloc(10)) == NULL)
3 |# _% G& ?6 U9 D! s6 d, Y8 X{
; M( A# a8 [/ F% z+ bprintf("Not enough memory to allocate buffer\n"); 3 `# }% [* y) H9 w' `, t ]4 S
exit(1); /* terminate program if out of memory */
5 e1 T9 [% Z* v} </FONT></P>
' I) j9 q, b" p+ h4 { n< ><FONT color=#0000ff>/* copy "Hello" into string */
3 s3 j, |( K& P. N8 Hstrcpy(str, "Hello"); </FONT></P>0 w- `9 H2 |+ s9 b% W
< ><FONT color=#0000ff>/* display string */
/ M+ x% B d6 \printf("String is %s\n", str); </FONT></P>
- a% T) X, f( r1 S5 T& b< ><FONT color=#0000ff>/* free memory */ . F: J; E0 d9 ]
free(str); </FONT></P>
9 I! {$ X( E1 N8 l( i< ><FONT color=#0000ff>return 0;
% Q2 e1 ?' M) y, ]( m* A} / f. i% V" z- h R' i b
: e w+ _# _! q" ~4 }/ s4 G
</FONT>
8 s: m" L& }$ p) E$ l `</P>
6 n3 J6 d# ]' k C5 L) ^6 W< ><FONT color=#ff0000>函数名: memchr</FONT>
6 b: t' ?) u- u* h3 H9 `功 能: 在数组的前n个字节中搜索字符 ! d) I% Y, ], Z, ~
用 法: void *memchr(void *s, char ch, unsigned n);
. U8 X) F" Q j: Q程序例: </P>3 n: |2 ^6 s; S) F5 q8 T6 C q
< ><FONT color=#0000ff>#include <STRING.H>
5 D P! i( ]! n1 C7 r# D0 |#include <STDIO.H></FONT></P>2 x1 u# o0 V& Q& K
< ><FONT color=#0000ff>int main(void) 4 F+ g2 R4 L+ D1 D2 w: a3 t( e
{ + o* d; \1 F9 x ]9 K9 C
char str[17]; 0 ]8 k. L- z. A
char *ptr; </FONT></P>
. U: u2 E2 ?2 x6 C$ E* S+ V< ><FONT color=#0000ff>strcpy(str, "This is a string");
* [, V) ~3 N0 }ptr = memchr(str, 'r', strlen(str)); 8 m3 s9 r( @* @( j) w% W2 b
if (ptr) 6 A* q& J! P4 [
printf("The character 'r' is at position: %d\n", ptr - str); / ]" z, t9 F8 ~
else
; y1 J8 Z, \! O) Jprintf("The character was not found\n");
; x4 C3 n, g$ d% H6 O! i& U/ W" K" P9 v mreturn 0; 1 [; j' I' e8 G$ q! T- K6 H. W
} & l, j1 [0 W% v" [6 z) M b
</FONT></P>4 H( X* _5 p$ l
< ><FONT color=#ff0000>函数名: memcpy </FONT>
; A$ r* V' _, R% U6 w2 `/ ^: V功 能: 从源source中拷贝n个字节到目标destin中
& z" T( @8 y# A0 U: C7 y1 {; S* R$ }1 B用 法: void *memcpy(void *destin, void *source, unsigned n);
8 J# o( N& E# i' N3 C程序例: </P>5 @$ \4 K8 h6 [- U# X
< ><FONT color=#0000ff>#include <STDIO.H> i/ C, T" Z9 ]' G
#include <STRING.H>
' h6 R0 [4 b8 h/ M) K; M3 Lint main(void)
1 @5 j7 K+ E9 m" | \{
2 C1 O- d& T, achar src[] = "******************************";
: F" z" Q+ v; K1 s0 @% j1 schar dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";
3 P! C# B& t( X) v) E# d" S nchar *ptr; ! M9 e% J1 Z, Z3 Y9 b i4 K
printf("destination before memcpy: %s\n", dest); " }1 j8 @6 L" ?: C
ptr = memcpy(dest, src, strlen(src));
2 G2 W, z7 G% v4 a. M) pif (ptr)
/ t4 ]9 G2 A, W( \printf("destination after memcpy: %s\n", dest);
- K; l) z+ t9 m7 T2 Z, j x( Celse ; y2 Y) D1 p. f- o
printf("memcpy failed\n"); 3 n4 A( d. u, C7 O9 V: X
return 0;
$ M* b" a* ]; u) c* w/ [% e. ^5 I}
* E. @& Q# y5 e b- E( M- \</FONT>( X$ B2 q! ?7 t$ Y) T% c
</P>* q( _3 o* q3 J8 `- ]. e. Y9 o
< ><FONT color=#ff0000>函数名: memicmp </FONT>2 e! A) ^9 S$ W$ `, x5 \8 t0 x
功 能: 比较两个串s1和s2的前n个字节, 忽略大小写
) \' g8 C9 d/ Y E! y3 s用 法: int memicmp(void *s1, void *s2, unsigned n);
# F( O" W' T q: S程序例: </P>& n7 m" h) Y$ |5 S$ J( I$ p% n! v
< ><FONT color=#0000ff>#include <STDIO.H>: X% X6 g3 g* n: [0 u
#include <STRING.H></FONT></P>; V) `2 Y$ c/ h1 A3 K& q4 Q4 _
< ><FONT color=#0000ff>int main(void) 7 Y6 J0 N. [& s
{ 9 F6 s$ V5 K3 q/ |" M/ X) Q
char *buf1 = "ABCDE123"; * i$ P/ ^) N5 a0 E8 s
char *buf2 = "abcde456";
! A% G" V7 c/ k9 R2 Y6 P# wint stat; ' l) z& ?8 p& r, H
stat = memicmp(buf1, buf2, 5); 6 c8 |( b; l" o, ?7 P5 Q
printf("The strings to position 5 are "); ; W2 D& g% R* x {* O$ e8 n% \; K- Q
if (stat)
7 k/ c& _* E, q% c( vprintf("not "); 4 O. z# X1 A0 r- k( n! J; o
printf("the same\n");
, a9 h/ m1 m+ k. D! R, |: freturn 0;
}3 a2 @: I; I4 |9 e6 W}
/ m# B# a2 R; m, e</FONT>6 S4 M- Q6 s/ Z h6 F: U0 c. `: I8 j
</P>, ~1 n* G/ m1 c. ^7 V
< ><FONT color=#ff0000>函数名: memmove </FONT>
3 Q9 Z9 T) c7 O B! e功 能: 移动一块字节
& H( t8 u: R% X3 q! ~7 F6 J3 Q! Z9 W用 法: void *memmove(void *destin, void *source, unsigned n); + |+ j3 O- O o8 ?2 J
程序例: </P>
# Z8 p3 ?; [- d) Y3 I7 S<P><FONT color=#0000ff>#include <STRING.H>5 J! l: Q% H* O i
#include <STDIO.H></FONT></P>- e6 G& O, C7 @
<P><FONT color=#0000ff>int main(void) $ k/ e3 u+ q* |3 P* y7 y
{
6 s9 y+ Z4 _. c, u$ v* d1 u4 }char *dest = "abcdefghijklmnopqrstuvwxyz0123456789";
" S" B! p" Z: m! ^- \, g6 V0 W4 F, hchar *src = "******************************"; 1 ]! W, ?! p1 C
printf("destination prior to memmove: %s\n", dest); . t0 j9 k8 \ A" q
memmove(dest, src, 26);
8 r" G# e$ y+ d/ W" D0 K- yprintf("destination after memmove: %s\n", dest);
0 r$ y% Y; D# q0 ]" L+ P2 greturn 0;
4 q' B: k$ K) [$ ]$ d, f, f}
. g1 {% c! g/ }- `& _- D
& V/ K: N: ~0 [- \* V9 V</FONT>9 |3 o. K. X* k2 ]( a" T4 P
</P>8 F; }6 }3 N6 G* y* [+ e
<P><FONT color=#ff0000>函数名: memset </FONT>
5 ~* r6 \5 D+ y' u8 a8 s3 [功 能: 设置s中的所有字节为ch, s数组的大小由n给定
& i% s3 D V- D3 J% s用 法: void *memset(void *s, char ch, unsigned n);
+ a1 G+ o$ K9 K& h4 ?2 u/ ]1 x程序例: </P>, c" a1 k: @- @2 j& N8 C3 F
<P><FONT color=#0000ff>#include <STRING.H>
9 l& X! _3 N, X6 d8 R" k5 }3 J2 G) w#include <STDIO.H>
& U8 o7 w* z; P#include <MEM.H></FONT></P>* t. P: S! _# W8 ~$ A
<P><FONT color=#0000ff>int main(void) : w6 `1 ^: n3 V1 k0 I6 W' e2 F" d
{
/ X" T5 v* }1 w- @% O2 j$ Nchar buffer[] = "Hello world\n"; </FONT></P>
% R' i9 @% k7 B9 {+ G7 I<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer);
" d/ c! ?2 C# B- K$ G9 T, p pmemset(buffer, '*', strlen(buffer) - 1); 0 |% u0 A( b! _3 X* B* u
printf("Buffer after memset: %s\n", buffer); C/ M6 M' h3 }! G, `
return 0;
: P9 F% L4 j2 T1 f+ p( v& m& }' W5 J1 ~} </FONT>+ Q. X: a+ M; x4 O' @
0 z2 V# e8 T* R! Z8 D
</P>
& \9 v5 B5 [4 {& ~1 T0 o<P><FONT color=#ff0000>函数名: mkdir </FONT>
" F4 z* K& K }1 X8 `- g- C) f功 能: 建立一个目录 % P1 p4 U5 ~7 v6 s8 O
用 法: int mkdir(char *pathname); ( i1 d% U8 R3 h* k. r% A# w
程序例: </P>" ]/ P2 C5 C5 D+ ]
<P><FONT color=#0000ff>#include <STDIO.H>
. k3 e0 v! y& e' v#include <CONIO.H>
* E- F' h" Q. p) N- h#include <PROCESS.H>
7 P; k5 K* j- d- o$ p$ ~& y#include <DIR.H></FONT></P>
! p2 }6 C5 E1 M4 I# w. F5 k<P><FONT color=#0000ff>int main(void)
, X% r) ]4 C7 K' J: K1 K{
2 ]7 o' M8 \( N1 L2 E/ Vint status; </FONT></P>/ L, Z- g3 T8 f" u7 j
<P><FONT color=#0000ff>clrscr();
+ ^; D$ H! Z, M* a N) nstatus = mkdir("asdfjklm");
]# s* T. `2 e(!status) ? (printf("Directory created\n")) :
% { F5 n1 k6 s. `# b! l0 U) f(printf("Unable to create directory\n")); </FONT></P>1 I3 y; g, I; }" V4 q
<P><FONT color=#0000ff>getch();
0 |9 a/ S" l. ^. f/ F7 Dsystem("dir"); / J9 g0 m; R! r
getch(); </FONT></P>9 \* B2 g, y5 W. P
<P><FONT color=#0000ff>status = rmdir("asdfjklm");
) J4 M! P) i5 U( G2 Z# d& b+ c(!status) ? (printf("Directory deleted\n")) :
6 k' N9 R e" x/ M( ]( n8 d% J(perror("Unable to delete directory")); </FONT></P>
- u" _1 \- p P* P<P><FONT color=#0000ff>return 0;
; Y4 U3 c8 U+ ^}
t9 P' Q- B O+ C P2 E8 t, q, t* l8 A2 X9 u- q* M
</FONT>$ u: e' i( s; R) |, ?. Y
</P>% s% ~* x9 @9 N" a
<P><FONT color=#ff0000>函数名: mktemp </FONT>* e9 M1 W! b7 J' M
功 能: 建立唯一的文件名 ) ~$ n$ ]6 W) T- c0 c
用 法: char *mktemp(char *template); 6 k" T0 F% V ^, I/ F. c
程序例: </P>
! G2 ^# K* s. w4 Q. B& Z5 Q<P><FONT color=#0000ff>#include <DIR.H>
& u3 P, @! a6 Q9 `9 g: u#include <STDIO.H></FONT></P>
; B- Q7 ?4 E. q2 s# P; ?<P><FONT color=#0000ff>int main(void) 2 S1 v2 }/ A+ V/ ^
{
# l, p. `; L4 ?$ W/* fname defines the template for the
/ k5 Q( L* @5 l& Z" utemporary file. */ </FONT></P>
1 J5 f2 z6 X- R<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>
- {; r* s) I5 Y6 Z8 c<P><FONT color=#0000ff>ptr = mktemp(fname); 6 y0 r: Y6 A. K3 P; X
printf("%s\n",ptr);
; P' O% F* W) ^5 f, wreturn 0; # @! \0 p7 _+ Q% _' ~+ y
} # X. O6 T1 Z) P4 T/ ?4 O6 G+ P
</FONT>
1 Q6 S# y: ~, n* W</P>; }+ s+ u* |) t2 f
<P><FONT color=#ff0000>函数名: MK_FP </FONT>
, T: t% c l$ K0 b! _4 n1 U9 D功 能: 设置一个远指针 v( ?; u$ y7 P5 c0 l8 j7 ?: p' ^. {
用 法: void far *MK_FP(unsigned seg, unsigned off);
& y+ m; _8 z& C$ I X1 d) M程序例: </P>
$ R* s% e& J! x( R$ g/ L. P<P><FONT color=#0000ff>#include <DOS.H>
# [: |" b% [! O#include <GRAPHICS.H></FONT></P>- q) k/ U2 u6 u: D
<P><FONT color=#0000ff>int main(void) % X/ l5 p. Y% J! U! P8 Z! v0 X+ e
{ ; L* ?7 l% Q* K- d `( _; ` c. J
int gd, gm, i;
3 A" H' g! L' d* p0 _* Aunsigned int far *screen; </FONT></P>6 A$ k# h x7 G" M
<P><FONT color=#0000ff>detectgraph(&gd, &gm);
8 I7 o8 P2 l0 ?& v# sif (gd == HERCMONO) $ m/ S5 B d! }5 Q6 S7 [8 {, H- G, f9 }
screen = MK_FP(0xB000, 0); % L8 Q3 ^% L! `( f. F
else
( l5 r$ `# i+ W* U( X# rscreen = MK_FP(0xB800, 0);
; E# ]; t5 O. L/ G, vfor (i=0; i<26; i++) 4 V2 {- Z2 X& l. j* o( ~
screen = 0x0700 + ('a' + i);
4 x' [ c: R% greturn 0;
' [( F/ O/ r4 M) G" W3 N( h}
6 f: w3 J% I3 x2 g' o1 l</FONT>9 y/ m* h& K1 Z! F, |7 P3 A2 X
</P>) h% J' U2 s. ?8 x' b
<P><FONT color=#ff0000>函数名: modf </FONT>
) O' }: T2 k" x0 c+ U& _9 g9 f功 能: 把数分为指数和尾数 3 e6 z% S5 v3 O$ B
用 法: double modf(double value, double *iptr);
; p8 R4 ]7 I8 R程序例: </P>
+ V! e: f0 ]+ [% T* A7 k, `<P><FONT color=#0000ff>#include <MATH.H>
, `! ? Z. [) F8 n#include <STDIO.H></FONT></P>7 R# Z# f- q0 i3 Z( U0 j
<P><FONT color=#0000ff>int main(void) 5 [6 r& m0 l d7 L& ]- S: {' o; j# X
{
. g: h) O/ h+ E, Y! U" b! Ydouble fraction, integer; % H" A5 R5 w4 v' L. @- q" s
double number = 100000.567; </FONT></P>
! F" F3 v! G8 W<P><FONT color=#0000ff>fraction = modf(number, &integer); : D" K ~8 Y" o v6 N0 `. g
printf("The whole and fractional parts of %lf are %lf and %lf\n", q! D( d5 ]" n+ i7 b9 x
number, integer, fraction);
! O8 I6 `# [3 b# B! J$ [- }- Treturn 0; 0 T; q0 \* t5 w; E
} </FONT>
: N. W; P# H8 B C+ _( X. [! T: | r6 K) {1 \4 j
</P>
2 o1 m, z* t( d3 H7 l<P><FONT color=#ff0000>函数名: movedata </FONT>8 J! g/ G5 H% X
功 能: 拷贝字节 6 ?- ~4 }1 E! R! i' o
用 法: void movedata(int segsrc, int offsrc, int segdest, ; ^0 k! o% S! H+ q# h" m/ M
int offdest, unsigned numbytes);
# ~, U+ Z3 X1 f6 V7 _0 ^6 \程序例: </P> t: k2 m* {+ s( u Y1 S4 {
<P><FONT color=#0000ff>#include <MEM.H></FONT></P>; W% ^" d+ l- o
<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>; a4 X3 }3 e" h( | P# L
<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */ 3 y! p$ F ] n
void save_mono_screen(char near *buffer)
$ ~4 L* H5 U' k4 Z& u. {{
& P, h6 [. L+ W5 g, ^$ L5 Pmovedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2); 2 I9 Y- i! `5 B( ?7 {0 [2 h
} </FONT></P>/ H; {' \- B$ u
<P><FONT color=#0000ff>int main(void)
. l. }- L: O( k1 R7 A{ ) l, w8 ?- a! F) I, h( N: s
char buf[80*25*2];
0 W3 \$ G) Q$ ysave_mono_screen(buf); % a6 L9 v% B! D! l- ^
} # y, q1 e6 K1 A/ G5 J
</FONT>, |; r+ X& ?7 K# t$ s9 r: g
</P>; h9 n9 s. p/ _' e- Z9 e4 b( g
<P><FONT color=#ff0000>函数名: moverel </FONT> N4 A! E9 Y N
功 能: 将当前位置(CP)移动一相对距离
Z4 o G9 s( y' d! T3 E# J# K用 法: void far moverel(int dx, int dy);
6 z5 V+ H- s1 q: ?程序例: </P>) Q, |' j! r4 M2 }8 A% E: |# P
<P><FONT color=#0000ff>#include <GRAPHICS.H> n7 ?8 x4 H% S% F3 T
#include <STDLIB.H>9 Y7 w( |8 w4 G; g5 N7 E
#include <STDIO.H>
% Q" E; ~8 [3 C#include <CONIO.H></FONT></P>( S6 h3 [3 C3 c7 Y& X
<P><FONT color=#0000ff>int main(void)
. g9 n6 K7 Q' g8 Y+ A{
4 K) H, m+ k6 H5 i1 O! B/* request auto detection */
2 G+ L& W, c# S* eint gdriver = DETECT, gmode, errorcode; + Y' h2 J* b6 y/ r8 o+ f" o7 _
char msg[80]; </FONT></P>9 b. W# i' k" g# f
<P><FONT color=#0000ff>/* initialize graphics and local variables */
* G7 _# _7 R: P$ D" Pinitgraph(&gdriver, &gmode, ""); </FONT></P>7 V5 G/ O. A: a6 h
<P><FONT color=#0000ff>/* read result of initialization */ , o z8 N, K3 b' c
errorcode = graphresult(); / h" R% _* } v O5 u- s
if (errorcode != grOk) /* an error occurred */ " y3 S+ E4 o7 {
{
# D; \6 j' _+ zprintf("Graphics error: %s\n", grapherrormsg(errorcode)); 5 u' O$ {: P4 W3 n* u- x& Q8 A
printf("Press any key to halt:");
2 u9 W! e+ t7 T. M% ngetch(); " o" n4 R$ T( U8 |' s* g' e ~& I2 u' o+ C
exit(1); /* terminate with an error code */
( I9 h, X6 g" _' D} </FONT></P>
8 B+ o! W/ y. e<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
" E9 Y5 R0 ^( d4 V; `/ h amoveto(20, 30); </FONT></P>. e- ?7 P, d1 {5 X
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ % d0 E- T% R6 H) }0 I+ B3 |
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
. d- z+ M* [, x4 |: v5 D<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ : Y- T; i" ^- h G1 T: i1 @
sprintf(msg, " (%d, %d)", getx(), gety()); ! ]0 q9 i- \; M* I
outtextxy(20, 30, msg); </FONT></P>
8 l* }# k" ^4 O' G5 J) P$ E K! G<P><FONT color=#0000ff>/* move to a point a relative distance */
D- i3 Q' y/ d& W+ S& y: m$ L/* away from the current value of C.P. */
4 _, o' x3 Y1 A# Jmoverel(100, 100); </FONT></P> Z% s: a! S" Z# \+ U
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
7 I6 W( W4 T3 E8 B5 L$ w* M I6 Dputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
' B% x6 f5 i; J! b7 a<P><FONT color=#0000ff>/* create and output a message at C.P. */
+ Z2 n) V5 k8 ~: u$ Q9 y- |6 v/ i& gsprintf(msg, " (%d, %d)", getx(), gety());
h( _- T( a7 ^; U8 douttext(msg); </FONT></P>
& ]+ q1 V; W* [5 _8 l: @# _6 e3 s- {<P><FONT color=#0000ff>/* clean up */ 7 H6 }$ g' O; D3 m# \# ]
getch(); 8 G4 G4 o2 a" z$ @4 S
closegraph();
% k* E+ E1 s0 ~& h& i# G! ~4 zreturn 0; & l: q! Q3 |1 W
}
0 V+ i. g Y( J2 Z. T2 s</FONT>. Y# N. ^/ o" N, A
</P>; Q5 ^' p0 [/ h; C( b
<P><FONT color=#ff0000>函数名: movetext</FONT>
v+ ~* q5 d2 \# M功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域
" H: q0 K5 ~8 i5 ]用 法: int movetext(int left, int top, int right, int bottom, ' A( a- O5 }: m
int newleft, int newtop); & q( h$ _$ E: ?( r6 S
程序例:
& t7 b( i6 @- |! ^! G( W5 K<FONT color=#0000ff>#include <CONIO.H>' r) d) X+ N/ v0 I2 X7 ~% {" \
#include <STRING.H></FONT></P>
/ s- g% A: J% _' F( _<P><FONT color=#0000ff>int main(void)
' `+ S, a+ x3 D7 R6 ^{
: H8 x" B" L, xchar *str = "This is a test string"; </FONT></P>
4 o7 Y: Q( W' |0 `( {<P><FONT color=#0000ff>clrscr();
/ y' h$ S9 [- x! Rcputs(str); , y0 O0 l# M7 z
getch(); </FONT></P>$ M6 `( a) [. A+ l
<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10);
+ D2 a% ^( d* }$ |, Igetch(); </FONT></P>
" ]+ r. W4 [- S2 i E<P><FONT color=#0000ff>return 0;
* H- E" Q# K/ G! j}
+ d: @, v6 z" e3 |) }' h& @ j8 {. d4 l+ H0 g( F
</FONT></P>, f: G! v% n. m, u* x1 ^& m E* w
<P><FONT color=#ff0000>函数名: moveto</FONT>
2 K. Q% o# A7 L6 d {; \( T3 h功 能: 将CP移到(x, y)
# s( ?0 _. b( B) W! ?: y% e& c用 法: void far moveto(int x, int y); " Z* e! p, i8 A
程序例: </P>5 k" u, M6 S: J# i+ x% k3 e
<P><FONT color=#0000ff>#include <GRAPHICS.H>
u: r3 N/ m/ j/ k+ h& P#include <STDLIB.H>& q* E# I8 a; v6 J- y {: B
#include <STDIO.H>( C' @- ^; ^7 A7 [. V* p
#include <CONIO.H></FONT></P>, p$ ?' ~& L0 A& U/ n9 |% A
<P><FONT color=#0000ff>int main(void)
/ B0 z+ y1 ~$ S$ }. Q5 |8 C$ L{ w" c: a* K# {& _
/* request auto detection */
8 X9 D9 K6 T& g0 n+ y; gint gdriver = DETECT, gmode, errorcode; - P- f) E' j8 i; s; v& F
char msg[80]; </FONT></P>
! t- r }# m0 l8 ]8 a<P><FONT color=#0000ff>/* initialize graphics and local variables */ 6 g! z0 H2 c* P
initgraph(&gdriver, &gmode, ""); </FONT></P>
) w" e7 v( ^ k }% {) N8 }! z. D<P><FONT color=#0000ff>/* read result of initialization */ * E/ x; J& T9 y) E
errorcode = graphresult(); 3 x7 T3 i: w! m
if (errorcode != grOk) /* an error occurred */
3 J6 f/ O' y0 a6 D{
4 _/ W+ N) g5 fprintf("Graphics error: %s\n", grapherrormsg(errorcode)); " C6 q% t/ @1 [; Y# @. R" X1 }0 N
printf("Press any key to halt:");
) x b4 V. }: j% v) z' bgetch();
$ q# T# H9 k8 Aexit(1); /* terminate with an error code */
" y; Q g$ l7 C} </FONT></P>3 Y. ?2 ?" Q! L b8 C% n7 G' t
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
: h: f" T" [' p" |5 _) Z8 y pmoveto(20, 30); </FONT></P>6 R. I4 Q; h7 X+ }
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ ! V! W1 } C. |: \! x; {
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>/ X' a+ n2 m( {: }
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ : Y* k+ p9 G" A
sprintf(msg, " (%d, %d)", getx(), gety());
; u4 X$ r [% J, wouttextxy(20, 30, msg); </FONT></P>6 X( b Q8 r0 F8 ~; d; e
<P><FONT color=#0000ff>/* move to (100, 100) */ X8 R1 U) M( {* y: r- a. B: C
moveto(100, 100); </FONT></P>. V" N G- J+ [+ g/ q( h
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ + K% P; g# B9 u- {. ~
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
* @% o G+ L, O6 D t, r<P><FONT color=#0000ff>/* create and output a message at C.P. */ 2 Q0 k: k9 R) O% Q
sprintf(msg, " (%d, %d)", getx(), gety());
3 _! k7 [) z7 I! j$ \, {' v) ]+ Youttext(msg); </FONT></P>
2 p# q* v& v; U" }<P><FONT color=#0000ff>/* clean up */ ' q/ D9 Y0 S% }- l6 u7 G9 f/ G
getch();
: o+ _8 P1 F3 O) |- dclosegraph();
. n( ? H. a& f/ m. Qreturn 0;
3 Z5 ]( S; X I( }* V* c/ r' ?} ! p* P; U" J( B4 ~
</FONT>* {8 z9 l! g$ Z3 s4 k! \
</P>
% S+ ]# a* D; Q+ U: K- r, x/ l<P><FONT color=#ff0000>函数名: movemem </FONT>
7 ~6 a1 E& @7 \6 ?功 能: 移动一块字节
`7 z9 j$ W8 N' ?4 s5 s用 法: void movemem(void *source, void *destin, unsigned len); & O! i1 Q. c( A! `* O
程序例: </P>
4 [. F2 T' `+ `<P><FONT color=#0000ff>#include <MEM.H>
) u6 [+ A& N6 m4 [0 w% L#include <ALLOC.H>9 l C. f# [: V3 M, ?2 I
#include <STDIO.H>, J M% J: A4 V r6 T& g
#include <STRING.H></FONT></P>" ~7 D$ p* y) P, R9 h+ ]
<P><FONT color=#0000ff>int main(void) - O; ^ z- |) k% W) i
{
+ v1 I& i7 |* F1 U* Tchar *source = "Borland International"; " g4 P6 @+ X) v" P
char *destination; 4 w: z q: z" Z& \3 O7 L' f/ g/ U: ^
int length; </FONT></P>
0 S9 X# ?6 V H" w' M<P><FONT color=#0000ff>length = strlen(source);
) B8 P: z2 o; }7 w$ Fdestination = malloc(length + 1); & O. r% c ~7 H, d, b. `6 n5 N
movmem(source,destination,length);
4 {% M. {: {$ F+ a% C% O& aprintf("%s\n",destination); </FONT></P>; |* l# t* @: c: c r$ W! C+ @1 ?
<P><FONT color=#0000ff>return 0; ' v5 {* \9 V8 I4 M+ W' w* j
} 3 q/ ?+ o& w$ P, f: F1 q
* Q N. w3 I: e( c F" y
</FONT></P>
! y' c" D) S3 s" b5 w# S<P><FONT color=#ff0000>函数名: normvideo </FONT>
- @1 ^( W( A) M- M功 能: 选择正常亮度字符 4 ^- n" ^( `+ S$ X5 N( v8 Q% V
用 法: void normvideo(void);
) i. k5 d4 j5 V4 o' T; a U" J6 }程序例: </P>% H/ n* a- L% p J: s7 Y
<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>
3 }; v( x' t! S# \* S! q<P><FONT color=#0000ff>int main(void)
/ K: ?) F% G6 z4 ~{ - G! `' M1 U4 ~5 v* f7 W: t- i
normvideo(); 9 S1 f0 s, Y! l4 y* A3 o8 b9 g
cprintf("NORMAL Intensity Text\r\n"); [) A- C5 V# J
return 0; : B6 t" y2 V+ G& |
}
! p% d8 [# U7 X+ s
4 R/ S3 B* m; |4 ]! }</FONT></P>
( k; k# T* \1 P! V% E( r<P><FONT color=#ff0000>函数名: nosound</FONT>
2 F" i% g/ b* C功 能: 关闭PC扬声器 5 @" u" {* D+ y0 A7 ~( x
用 法: void nosound(void); 3 O/ ^! q1 G4 O: B/ `' i4 g
程序例: </P>
2 F# p- b. H9 s8 D2 ]+ e: v<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>' l) m+ O( M5 e
<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity. ' R: i3 M1 D$ _1 s3 V1 }
This was determined empirically in Australia, where a new factory
: `0 B: K- x5 V. T) \ q7 ] W' [generating 7-Hz tones was located too close to a chicken ranch:
& ^& P5 d3 S, c& FWhen the factory started up, all the chickens died. </FONT></P>/ P# X: v1 n) w6 [* u
<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone.
v9 H' }0 H! A* x: @*/ </FONT></P>4 L7 Z! R6 N: y/ a# M, h( H
<P><FONT color=#0000ff>int main(void)
: e. Y5 R) ?, H: o# W4 h{ ; v; _/ i$ b/ J5 X2 M! F7 @
sound(7); ! o' Z5 \4 H) `& M/ N% y+ T
delay(10000); 6 }" m. l: l! v+ L1 I6 \" s
nosound();
) z7 t! E! l/ a, o2 t; w}
6 T" S3 ~) T) k4 p) ^/ y2 |</FONT></P> |
zan
|