- 在线时间
- 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>
' J5 L7 N0 S; ^! B. F3 n1 ~! ~< align=left><FONT color=#ff0000>main()主函数
0 A5 `4 J: @2 ^/ c</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某
5 F5 G- K: W. w7 u6 ?个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 * {, k& m# V$ `1 S/ P
在哪个地方, 以下几点说明都是适合的。 1 j7 H$ h" Y; L* u- ^
<FONT color=#000099>1. main() 参数 </FONT>, _# l& c$ b$ |+ O D1 R; Z
在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。 ( F [$ e$ p9 e$ V, F6 E2 ` I
* argc: 整数, 为传给main()的命令行参数个数。
" W8 R1 N0 h4 N& H2 j' w- J" K* argv: 字符串数组。 / k* B* B& H: _
在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0
1 O+ ]( [9 c1 k以下的版本, argv[0]为空串("") 。 8 w. s! x) x3 k) R
argv[1] 为在DOS命令行中执行程序名后的第一个字符串; * o* i# J* p8 ?+ W( T% h( c- X
argv[2] 为执行程序名后的第二个字符串; 0 a! n6 R+ }2 u8 Q1 |
...
' x A" X( u% N/ f3 \& Aargv[argc]为NULL。
/ Y$ V: ~1 @& \& [*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符 6 e; x$ E6 m! U- J, K
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C:
8 H" l. h8 M" n+ |\TURBOC(对于PATH) 或YES(对于87)。 ) W: m2 Y! p' X1 k) F R# U$ L
Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中
' D9 W$ m+ i, }) k! a6 ^$ F5 l说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序 : ]6 t! q0 h. V* I
的局部变量。 * e' ]7 S- C6 d$ Y, o( o; W
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
" R8 i, A/ U$ x; l的例子:
: K+ V w3 H" m1 @0 G<FONT color=#0000ff>main()
- e3 G, d a" z) @$ A4 x- K) ?( Pmain(int argc)
- k2 n+ ^" O3 [9 k! Gmain(int argc, char *argv[]) ; @6 T7 ^7 z) X+ ~3 B
main(int argc, char *argv[], char *env[]) </FONT>$ `" @5 Q2 C+ {
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
1 _7 J7 ?9 L# w* e+ C! ?用argv[]的情况。
/ |! Q" m! Y+ G以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
. k0 J" Q1 G+ P- K7 ]* s( G9 \<FONT color=#0000ff>/*program name EXAMPLE.EXE*/ , l+ q) s! V$ g7 G' Y o' i1 i
#include <STDIO.H>
) ]& [% v- S8 C0 y#include <STDLIB.H>& R9 u$ Z0 F* R/ S( w5 w; d+ p
main(int argc, char *argv[], char *env[]) % s* I: \0 ~* K: r- @* j
{
$ j j: H/ t- _- l; i; C Jint i; 3 f- i2 q2 S' ]
printf("These are the %d command- line arguments passed to t/ r5 ?4 C" J* e- M4 H! z
main:\n\n", argc);
& ?3 O; Y' Y, ^: g* Mfor(i=0; i<=argc; i++) 1 q* u$ Q/ F& e, ^7 x" {/ d
printf("argv[%d]:%s\n", i, argv);
0 b3 X! I. k2 ~0 q5 Y$ w* n9 Dprintf("\nThe environment string(s)on this system are:\n\n"); * K5 }3 R5 G+ X) s
for(i=0; env!=NULL; i++) / C/ k. u4 e3 b9 I# n
printf(" env[%d]:%s\n", i, env);
! U) T) M, H9 e} </FONT>6 ?6 [, a/ s! B- F
如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: 1 q0 B }8 \' x
C:\example first_argument "argument with blanks" 3 4 "last but
: h% N$ o& E% I4 ]one" stop! ! D4 _) D+ E/ S- s* h2 q8 |$ T( P
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument : B3 \ t! S/ K2 b5 C' C1 ]( w6 D% n
with blanks"和"Last but one")。 2 J) p! Q9 b* K; i0 R. t
结果是这样的: ' q+ a; p% l2 w/ [* {- Y# z
<FONT color=#0000ff>The value of argc is 7 ' ~$ G" Y% W2 b
These are the 7 command-linearguments passed to main: & m, o5 v& ~8 h& ?
argv[0]:C:\TURBO\EXAMPLE.EXE
( r F* T, o8 {& ~7 t7 N6 margv[1]:first_argument , X# ?& k( J9 r* @" v3 q
argv[2]:argument with blanks
+ ^! \5 u1 [' uargv[3]:3 4 R l6 q* D+ ^$ W
argv[4]:4
0 I3 h ^& u9 f: @1 ^4 @argv[5]:last but one / s+ f& g* A+ a3 S7 H" X8 l
argv[6]:stop! 4 B2 Q7 W1 ?; u5 r6 U( u# f
argv[7] NULL)
8 w7 }+ s k7 F, F9 bThe environment string(s) on this system are: 9 \! [6 r; H; d" ^. X* e
env[0]: COMSPEC=C:\COMMAND.COM
) A* m+ o2 L( c) j% s0 Q! Eenv[1]: PROMPT=$P$G /*视具体设置而定*/ 8 ?+ m0 F) n) ?4 Z5 ~! `
env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ ( b4 b, F8 R7 K( n8 \0 b1 ?& f* ^! y
</FONT>( j J+ C" w6 M3 V: q
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
" A4 E9 w, q$ L5 e- \括参数间的空格), 这是由DOS 限制的。 & r% p! U. H. k. M/ X
</P>+ @* K# O# `3 Y0 ^' O! s( c
< ><FONT color=#ff0000>函数名: matherr </FONT>3 E6 W- z) {. P
功 能: 用户可修改的数学错误处理程序
0 W3 @! ?2 y, p! N+ R3 X9 A) a* s用 法: int matherr(struct exception *e); * P' J+ u7 f+ L) m
程序例: </P># _- ]1 Y+ p# d K! M, u( n
< ><FONT color=#0000ff>/* This is a user-defined matherr function that prevents $ k1 {1 H" Z( _0 a* i4 V. Z
any error messages from being printed. */ </FONT></P>- _' ^' u: y5 ~6 @' @: v
< ><FONT color=#0000ff>#include<MATH.H> </FONT></P>$ q& X$ _2 f F9 a
< ><FONT color=#0000ff>int matherr(struct exception *a) : J. H) p/ N! l6 h
{
V% |- l3 f- i1 l+ Hreturn 1;
1 s) Z" M8 x) _/ q: z9 _} 2 i* M% |& } n$ G. o& A" u
</FONT>! A X9 N; U2 }: d1 r3 i+ j
) R7 Y/ m3 ^& V0 Z# J) ?* X# ~</P>
" ^2 L4 G( _4 _< ><FONT color=#ff0000>函数名: memccpy </FONT>' [4 m& ]) X* V# q# s5 x+ z# R3 _% _
功 能: 从源source中拷贝n个字节到目标destin中
- i/ y: [% U4 Z5 _4 v/ p用 法: void *memccpy(void *destin, void *source, unsigned char ch, % v$ c( W) r$ T1 O
unsigned n);
( ^6 M, f7 a+ Z# D* u程序例: </P>
]( C) ?. Y: {( @< ><FONT color=#0000ff>#include <STRING.H>5 ]% n4 C: N$ q5 s9 s( m1 }
#include <STDIO.H></FONT></P>* T% B" @/ `' {9 W+ k
< ><FONT color=#0000ff>int main(void) ' l- K: `1 M7 `# s* I! F o' M
{
9 G( ~% Z- ^2 F* J7 y. x& zchar *src = "This is the source string";
4 C9 F/ }2 i; o2 c* g1 Achar dest[50];
; A% I& ?; _( ^$ Schar *ptr; </FONT></P>& c4 D: F6 A: L
< ><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>
3 Y8 c8 I5 I+ E0 D9 c) P< ><FONT color=#0000ff>if (ptr)
3 b8 ?. H; r; m* Q6 I{
& u. W: {' k2 G6 z6 t7 N4 F' U7 M*ptr = '\0'; 2 L& s& Q" e3 ], @ p
printf("The character was found: %s\n", dest); : a) x8 n' V/ s, \5 ?- [# D) k
} , T6 I6 I1 k/ G; D; t2 Q/ e
else ) e1 u" s! ?: |# k# a7 R8 g
printf("The character wasn't found\n");
& R. C; ?2 T# w3 z% q. i' b6 Yreturn 0; ' e+ y# t% ?2 `9 L
}
2 H# g& T5 S5 H4 r% j. a</FONT> S3 D- G3 E6 q" `; p0 U% ~
</P>) P& Q, y' L# z4 i3 h7 k
< ><FONT color=#ff0000>函数名: malloc</FONT> - U, U5 I$ A! r) t
功 能: 内存分配函数 3 t8 U7 ?. b6 ] V
用 法: void *malloc(unsigned size); 1 W% w% Y* i* t6 Z6 K
程序例: </P>4 e3 ~9 p: n! W6 E
< ><FONT color=#0000ff>#include <STDIO.H>/ p S* }) } [% Z
#include <STRING.H>
+ F% P3 T$ R; n8 q, Q#include <ALLOC.H># a) a0 h" q$ ~' W# D+ m" ~0 X
#include < ROCESS.H></FONT></P># [+ {; u6 h0 _3 V, @0 j
< ><FONT color=#0000ff>int main(void)
9 J7 O! D9 U1 Y- r{ 2 d, |3 f, R3 d$ J9 }' z; p! Q
char *str; </FONT></P> R9 c3 E& z; [; e* j
< ><FONT color=#0000ff>/* allocate memory for string */ $ ]7 d: r& {& {2 ^; ?$ }
/* This will generate an error when compiling */ 4 \" @7 w# y5 z9 ]5 E1 I+ _
/* with C++, use the new operator instead. */
. \, Y$ m# W9 `$ g: d& lif ((str = malloc(10)) == NULL) 3 c$ {3 B( I. V* Q- N4 r' X) h4 C
{ 3 D4 ~" k: k3 w! Q4 [, J. q3 m4 j
printf("Not enough memory to allocate buffer\n");
" D! g" _6 v" P5 U+ Z: K1 @exit(1); /* terminate program if out of memory */
1 S. c5 {$ [' y& n' ]} </FONT></P>( @* U5 a9 x: a
< ><FONT color=#0000ff>/* copy "Hello" into string */ ) [# J* C! P6 l
strcpy(str, "Hello"); </FONT></P>
8 ?) H, B! f3 a< ><FONT color=#0000ff>/* display string */ 1 l7 L. Y3 {! b2 b" O V
printf("String is %s\n", str); </FONT></P>7 ?1 n$ c5 W6 c) r% ?
< ><FONT color=#0000ff>/* free memory */
2 ]0 o$ ]0 }4 R4 r j3 j* Ffree(str); </FONT></P># k; Q3 ^! m. z: U% Y& Y
< ><FONT color=#0000ff>return 0;
3 M+ h" L- h0 a' Z7 ]( I, v} 5 B+ f8 A% A% O
2 J% G- N. Y' e' L6 N</FONT>4 k( Z' e+ K; A
</P>
' {" }: \( i1 G% n% c, F$ S< ><FONT color=#ff0000>函数名: memchr</FONT> ' [5 I$ u* ]* R
功 能: 在数组的前n个字节中搜索字符 7 Y9 S3 h/ ^( q) J( Y' i
用 法: void *memchr(void *s, char ch, unsigned n);
* b6 u- s8 x( [8 G' f0 f, s程序例: </P>* k( A( z6 X o( z1 X. s
< ><FONT color=#0000ff>#include <STRING.H>- u9 l% A0 r3 E0 y( P
#include <STDIO.H></FONT></P>
1 S# O( t% I. \: K$ E< ><FONT color=#0000ff>int main(void) # ?4 c" r6 C9 y( S8 `0 k
{
1 V. w: d" J8 S( R3 R# k; h7 h' W0 Nchar str[17]; ( W$ }6 h* b+ s: ~
char *ptr; </FONT></P>0 \6 i5 P: m, p" z0 O- `
< ><FONT color=#0000ff>strcpy(str, "This is a string");
+ l6 w( @9 D) Tptr = memchr(str, 'r', strlen(str));
8 l, A! x! t! V: iif (ptr)
+ _0 I# ]* D$ R1 lprintf("The character 'r' is at position: %d\n", ptr - str); 8 n8 E: @2 s4 d2 y" h
else
" J/ N$ K1 q' ]9 Q% f# Kprintf("The character was not found\n"); 1 H8 U8 w; F8 |& T# X; K2 D- [ v
return 0; 0 v u, _, G8 m/ Q! P6 o
}
( j9 y3 Q3 u; B" H0 F: T</FONT></P>
; F5 \; q4 z! d+ S5 P< ><FONT color=#ff0000>函数名: memcpy </FONT>; U% r$ \4 H& C O" S5 e8 j
功 能: 从源source中拷贝n个字节到目标destin中 5 e" W% ?! j4 K; Q0 \- p6 p
用 法: void *memcpy(void *destin, void *source, unsigned n); 9 m; O/ d g p5 R# `2 K: j! u& A
程序例: </P>- \% S$ y$ ?, k$ O5 i6 o
< ><FONT color=#0000ff>#include <STDIO.H> u- l4 E- K- D( R" Z2 n
#include <STRING.H>) E( i% y' D" b
int main(void) ) e# D8 R7 d5 B) u" X5 h
{
6 |3 o$ l' _5 h. Echar src[] = "******************************";
3 o' X7 a* x8 d: h. m3 Kchar dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";
8 `. @: g( Z. ^/ i5 F7 Pchar *ptr; ( E$ X# F3 r5 N+ L
printf("destination before memcpy: %s\n", dest); 9 Y4 j$ k( F0 _# J0 J) t& C! v
ptr = memcpy(dest, src, strlen(src)); " `1 a! v* A/ c9 H
if (ptr)
$ f% P# L3 y6 S4 Iprintf("destination after memcpy: %s\n", dest);
& t' o: u4 x1 Z3 P3 uelse
# p& O1 e O. x Oprintf("memcpy failed\n");
/ u' ]! j4 @1 X* e$ |' c$ ereturn 0; 6 F$ u6 N" R: I$ x+ x9 n B, D
} ) Q' Q- Y+ P8 B4 `- B
</FONT>
, [6 ~4 h7 J# w' C5 D</P>8 Q" @! Z7 z! k3 S7 s4 _
< ><FONT color=#ff0000>函数名: memicmp </FONT>
0 W5 a% l7 A1 p& K3 m. U功 能: 比较两个串s1和s2的前n个字节, 忽略大小写 1 `! M. m2 \% G& L# _
用 法: int memicmp(void *s1, void *s2, unsigned n); ' v1 ^, H8 t9 M( p" e" K
程序例: </P>
6 Z. q8 m+ b7 s. ]2 D< ><FONT color=#0000ff>#include <STDIO.H>; |2 ^% ~% O, m5 t6 h6 s7 U/ r
#include <STRING.H></FONT></P># C. D* G1 P8 {3 I% a6 I0 {
< ><FONT color=#0000ff>int main(void) " Y# C. e8 q. X/ H' p* r6 I
{ ^9 F5 _/ L2 i
char *buf1 = "ABCDE123"; + b/ ^4 `* y/ b d: l
char *buf2 = "abcde456"; 8 b- c: B, O0 w& }2 c
int stat; 9 C5 p$ J4 X$ \+ F
stat = memicmp(buf1, buf2, 5);
; ]" N; x6 R9 H" |' [" Xprintf("The strings to position 5 are ");
o: ?8 ~ [8 L, A5 [* r3 G* {if (stat)
1 v4 o8 d3 F7 z6 B. Fprintf("not ");
( S) j- T. M \9 b- ^7 U6 [5 hprintf("the same\n"); + \; T& S9 m+ X0 V3 W
return 0; 4 q: c$ _, Q4 ]
} 1 a/ M) ^$ U5 T/ }6 y$ w
</FONT>; _3 b- T8 l% A" k4 o
</P>
% y! M6 f; G9 }# \% Y< ><FONT color=#ff0000>函数名: memmove </FONT>2 A4 e+ `# N! x2 e; q% s4 o9 Z
功 能: 移动一块字节 ; U) l% }: u7 ~$ I7 e' ^+ z
用 法: void *memmove(void *destin, void *source, unsigned n);
W8 C! P3 I0 F3 |7 v: |- a* s, ^* i程序例: </P>
# `+ f$ P. f9 ]<P><FONT color=#0000ff>#include <STRING.H>
' _, X0 m3 U" g- X; c#include <STDIO.H></FONT></P>
3 h- e6 p# N1 h8 k' Z<P><FONT color=#0000ff>int main(void)
3 J2 h: p5 b" ]3 P' q1 A{ ) ~( O1 ?- S, k8 c3 W
char *dest = "abcdefghijklmnopqrstuvwxyz0123456789"; 5 E5 B& W2 |, c& @) [
char *src = "******************************";
. d" m5 z) _6 L3 E0 L3 Yprintf("destination prior to memmove: %s\n", dest); $ O- D: e% G7 j" [. F% W
memmove(dest, src, 26); + m8 G# L d2 b9 s+ q$ Y7 I. O7 |4 U
printf("destination after memmove: %s\n", dest);
# P3 ^. n4 p5 F2 s, C( V6 b ]return 0;
; N1 s4 A4 j- F; [ C}
9 B- s1 y q) a- `- G) \' Y
( F5 f9 @9 _: k; W</FONT>
+ K; d# y% [- t& F: v</P>8 b1 [% x$ A/ \5 v, U( E( z
<P><FONT color=#ff0000>函数名: memset </FONT>
( _! l( F7 G }" @功 能: 设置s中的所有字节为ch, s数组的大小由n给定
- Y( |9 w3 S' `# y用 法: void *memset(void *s, char ch, unsigned n);
5 q# u; J% ~5 Y4 g4 Y- i程序例: </P>/ \ G0 ~( @7 O a- N3 ~, L/ t& e
<P><FONT color=#0000ff>#include <STRING.H>) {& ]1 V1 L* i' r
#include <STDIO.H>) w5 o, c# n5 F( j
#include <MEM.H></FONT></P>
+ n! n" J3 f( N( ]. r% ?<P><FONT color=#0000ff>int main(void) # s* H: p' f" @" V' @" t
{ # U' G& m# N/ w$ E& S- E
char buffer[] = "Hello world\n"; </FONT></P>& i$ v+ g) ]: \ a1 w, b5 h! ]
<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer); 9 ~2 Y3 H/ q3 l. H
memset(buffer, '*', strlen(buffer) - 1); $ B u7 E2 P5 b, j" K. r+ B" q' o
printf("Buffer after memset: %s\n", buffer);
/ t# `6 B. p$ q0 ereturn 0; $ e- [, {$ `) R: v7 _
} </FONT>! i% n2 s* |8 ^2 w8 E8 D
2 Z' E5 x6 A: z9 \0 r</P>
$ {, \$ H! U2 x0 w X<P><FONT color=#ff0000>函数名: mkdir </FONT>, {& W/ G4 z/ ]6 |7 G( X
功 能: 建立一个目录
1 G ~$ B+ A$ D P3 l用 法: int mkdir(char *pathname);
E! p2 u; W, Z2 r/ M& ?程序例: </P>
" u& w# B9 ]& ^! u9 W! @<P><FONT color=#0000ff>#include <STDIO.H>9 }' n( p5 W! j+ g1 J
#include <CONIO.H>! R% W# }" `& N' [
#include <PROCESS.H>: ^( N) Y) X- s3 F" S! ?. z) {
#include <DIR.H></FONT></P>7 F5 d7 m5 Q0 ?$ i) O- M V
<P><FONT color=#0000ff>int main(void) * J1 [0 T( v/ R* h" e! O" ^
{
; a* j5 i% V2 v. o) p& C* Qint status; </FONT></P>
9 T& b' n `; ]" U1 ?<P><FONT color=#0000ff>clrscr();
7 f6 G4 f; h. Nstatus = mkdir("asdfjklm"); 6 D5 _% Z8 c- ~
(!status) ? (printf("Directory created\n")) : / L5 m4 }. q+ V0 h: O8 ]
(printf("Unable to create directory\n")); </FONT></P>
5 `, n1 W' \! ~2 d9 s<P><FONT color=#0000ff>getch(); 7 ]8 i/ H* U2 u7 I* K
system("dir");
) C& s1 Z5 L& q* g- e* J+ {getch(); </FONT></P>
' p7 ~/ y. z: P( m' f, ?0 k<P><FONT color=#0000ff>status = rmdir("asdfjklm"); $ i ~; Y, y! a& e6 d: h
(!status) ? (printf("Directory deleted\n")) :
B& i# p( x; o2 d9 n0 @9 d1 q(perror("Unable to delete directory")); </FONT></P>/ Q$ o5 |( V2 a& F* q
<P><FONT color=#0000ff>return 0;
0 W& K/ o+ o3 d. r/ l6 Q4 v}
: x' _6 s7 p) s8 P' P2 h9 i8 C* G7 z0 m* f
</FONT>4 O* ?% W( A7 b! X/ E) N2 x, v
</P>. r! G% O- I3 C$ Y+ ~+ l
<P><FONT color=#ff0000>函数名: mktemp </FONT>! R9 S' I) n, b. H' H4 k
功 能: 建立唯一的文件名 2 y" y7 a5 e% e7 Y4 p) x
用 法: char *mktemp(char *template);
: z2 ^2 Q6 ~: H# ~. S程序例: </P># N2 S6 Y+ `4 K* S
<P><FONT color=#0000ff>#include <DIR.H>
, p0 c" Q6 L9 f! n7 F2 S, S#include <STDIO.H></FONT></P>
4 E1 f5 q4 j% q2 Z6 X* E2 M {<P><FONT color=#0000ff>int main(void) - f, y4 G5 x& t! C7 L
{
. B4 A& e8 X9 L5 X" L0 X/* fname defines the template for the # \# ]; m6 i& A
temporary file. */ </FONT></P>
* S7 m, L7 [ c/ P0 U<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>) l/ o. a5 q u( Q7 V2 }2 {# T4 s* [
<P><FONT color=#0000ff>ptr = mktemp(fname); : d g+ A9 t9 J+ U2 i) q5 @: Z! U
printf("%s\n",ptr);
/ a* I: {3 \- \# mreturn 0;
) L; W3 a% O8 ]" c/ d4 q} ) l [. \2 x) D+ n7 v
</FONT>. U* x9 Z8 e; M+ b
</P>' w+ }+ d9 V9 V3 q9 p
<P><FONT color=#ff0000>函数名: MK_FP </FONT>
) q: l2 h9 I: w' d' {. t功 能: 设置一个远指针
: R1 ^1 ~% X, k& P" r o用 法: void far *MK_FP(unsigned seg, unsigned off); 1 W1 i3 P+ T0 ]0 w# U) o
程序例: </P>
! i `% U0 s3 R L<P><FONT color=#0000ff>#include <DOS.H>
?. F1 N0 p# S+ J#include <GRAPHICS.H></FONT></P>
* `* @' Y0 l m" c2 R8 v' T<P><FONT color=#0000ff>int main(void)
3 c' H H) \/ ]1 b{
- D2 J! {! N* k. a9 b3 ]int gd, gm, i; % I6 O0 N. ]0 j( m0 l" B6 ?( m
unsigned int far *screen; </FONT></P>
, o1 s$ R- h; P7 u<P><FONT color=#0000ff>detectgraph(&gd, &gm);
0 A# G: i- w& J# X2 l% F" ^if (gd == HERCMONO)
1 f t4 o$ z# J. escreen = MK_FP(0xB000, 0); ; X+ H$ ?0 B& W
else 7 S* f+ Q& p' k: _
screen = MK_FP(0xB800, 0); 8 B# Q$ K; A- H+ K, c9 v' {# p
for (i=0; i<26; i++)
5 ~- r; w! U* u5 Nscreen = 0x0700 + ('a' + i); % F1 k, {8 x1 \
return 0; * I \0 L, P( \# z
}
% ]+ ~% S1 `. B0 s</FONT>
4 d1 ^) r' d5 F5 E" s</P>
. V# K" P( F* t3 b! O, k<P><FONT color=#ff0000>函数名: modf </FONT>0 O1 c' F. o& C& {9 ^7 o9 K
功 能: 把数分为指数和尾数 9 r5 r% j9 ^2 [9 y' d! [- p
用 法: double modf(double value, double *iptr); ) { k2 ~" C$ H0 q: R7 q1 [! D* p
程序例: </P>- ^- P9 \5 w; {0 n
<P><FONT color=#0000ff>#include <MATH.H>, W0 \2 W4 H9 x& z% }
#include <STDIO.H></FONT></P>
( i5 |7 u9 i T<P><FONT color=#0000ff>int main(void)
$ D2 ~5 Q7 R! i4 X0 e{ 0 Y1 M$ l, W: q" E
double fraction, integer;
4 s O6 `! n7 k; edouble number = 100000.567; </FONT></P>
2 Q0 F4 N7 d1 j P- s1 m2 V; l/ w<P><FONT color=#0000ff>fraction = modf(number, &integer);
. N1 Q7 d: `+ L) |printf("The whole and fractional parts of %lf are %lf and %lf\n",
" B! H; X4 v' V L! Dnumber, integer, fraction);
* P0 E0 w- ]' ]2 y" rreturn 0;
. p5 c$ T B% G4 t( J} </FONT>7 S+ ~5 E; B9 W1 L$ R
0 ^& V( ~; O, `</P>
) o( z/ [0 n2 F* m<P><FONT color=#ff0000>函数名: movedata </FONT>4 X/ M; N- v/ \# v$ h8 |
功 能: 拷贝字节 ; l2 S7 J8 A4 i
用 法: void movedata(int segsrc, int offsrc, int segdest, 5 v" B! S# Y2 y( \8 u
int offdest, unsigned numbytes);
/ D$ Q5 q. e: I程序例: </P>
0 I2 s# y5 r7 O$ k- [<P><FONT color=#0000ff>#include <MEM.H></FONT></P>+ O4 A$ c+ `4 d
<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>1 O5 R2 g6 ?% W" N6 D
<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */
& ]2 |* v$ U; R% Kvoid save_mono_screen(char near *buffer)
3 f% ]8 S; [$ a{
" h- X% T. z7 a* |3 \9 k* Umovedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);
* A6 P8 h5 {7 W5 l3 e+ n} </FONT></P>! {5 r, B( t$ M2 V" K" o' S4 z; Z
<P><FONT color=#0000ff>int main(void)
7 m0 K; w! S. {9 `' j- P{
. `2 b0 ?$ D6 Bchar buf[80*25*2]; + a2 `/ @8 {3 E+ C
save_mono_screen(buf); * H2 \" U- X2 _" T3 g
} ( {+ W+ X$ M$ {
</FONT>; ?0 O0 B7 H2 H9 |, W
</P>& k+ ?& j" _( x# ?
<P><FONT color=#ff0000>函数名: moverel </FONT>' U3 u8 ^/ e" N4 Y! I
功 能: 将当前位置(CP)移动一相对距离
; R6 f9 i3 k' c用 法: void far moverel(int dx, int dy); , i( K0 y4 W7 `! w: y. P
程序例: </P>1 P& n) ~0 b: G* ?6 E8 \" ~
<P><FONT color=#0000ff>#include <GRAPHICS.H>1 Y7 z& G( T0 c M5 u, p
#include <STDLIB.H>9 m# |& |+ z3 o2 B2 [+ Q
#include <STDIO.H>8 K6 J y0 u5 Z B( N
#include <CONIO.H></FONT></P> J$ V& T1 a! a4 H
<P><FONT color=#0000ff>int main(void) 1 t; ^$ v+ X @' @3 ?
{
1 j' Y' n+ F1 H/ W+ k, q/* request auto detection */
; y; |+ M4 q0 c3 w- pint gdriver = DETECT, gmode, errorcode;
0 V4 t! T2 p0 A2 schar msg[80]; </FONT></P>1 s4 |0 F$ o* x2 u
<P><FONT color=#0000ff>/* initialize graphics and local variables */ % z+ d+ X4 b8 L+ A9 w+ K
initgraph(&gdriver, &gmode, ""); </FONT></P>
' ~3 i9 ?5 B- _0 G0 v, ?4 X<P><FONT color=#0000ff>/* read result of initialization */
* l# y% V- s0 n- d8 N+ U8 `errorcode = graphresult(); " y ] s* l4 a0 V" j$ R
if (errorcode != grOk) /* an error occurred */ 7 [9 X/ J8 q1 c9 M& K; V! k
{ ' C! w e, k5 D l! x% ~
printf("Graphics error: %s\n", grapherrormsg(errorcode));
3 U0 @1 o9 ~6 L* o8 ^4 W9 r; cprintf("Press any key to halt:"); ! d5 R" _9 U9 a+ Q/ l
getch(); 5 c& M- y, X% z& _
exit(1); /* terminate with an error code */
; \: j! B9 P+ j! o7 n1 g} </FONT></P>' s. Y& k. I0 P8 T' ?( X, n; V
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
( ~; G+ {0 k5 A& ]8 `' _moveto(20, 30); </FONT></P>
5 d0 x6 T+ `3 \5 Q$ k4 \<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
P. I8 w+ i+ ^' N; M! e3 v( R+ z' mputpixel(getx(), gety(), getmaxcolor()); </FONT></P>9 r; ?' ^' V7 X0 H% `- ]2 z" N: k- p
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ ' d0 s& Y! y' \" E: I2 [
sprintf(msg, " (%d, %d)", getx(), gety()); 5 ^( v) F* i& B& `1 `
outtextxy(20, 30, msg); </FONT></P>
; H5 Z: `0 s! G1 l3 B<P><FONT color=#0000ff>/* move to a point a relative distance */ , L, w6 r8 g% S/ d" p
/* away from the current value of C.P. */
5 |& f: C. T( h9 {7 J, wmoverel(100, 100); </FONT></P>
1 _+ b' k1 I' i& e) p6 D& ^<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ ) x- M4 M: E3 p/ \! O& U o
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
) |2 L& j4 O& t$ I% V4 J<P><FONT color=#0000ff>/* create and output a message at C.P. */ 3 A% y" D! X% J( l) |
sprintf(msg, " (%d, %d)", getx(), gety());
! H7 ~/ g( F4 Xouttext(msg); </FONT></P>" [* ~3 e7 w3 {& p. }3 j7 U
<P><FONT color=#0000ff>/* clean up */ 9 r& p! }7 Z5 Y9 _# b" M
getch();
# h1 J+ ^. B; y& b# kclosegraph();
* f& N0 J$ O2 z: ]# f2 zreturn 0; 3 t6 d4 t0 b) d9 w( _) A
}
( a7 S- [; s, W/ d- v- q6 U) i</FONT>
$ U: n9 ~6 \/ F$ o7 G</P>9 v5 {0 ~ D* D2 f$ V% e
<P><FONT color=#ff0000>函数名: movetext</FONT> # s& e( @/ |5 C
功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域 : N1 |1 j) y& Q2 a) h
用 法: int movetext(int left, int top, int right, int bottom, ! [4 o& L, l8 G# H
int newleft, int newtop);
: T5 \4 T3 e# r- u程序例: 3 A, Y6 n# m2 d0 b
<FONT color=#0000ff>#include <CONIO.H>5 B& J- F9 _: @/ v3 x9 Q
#include <STRING.H></FONT></P>
* d% S! _* p- f8 C) i0 @0 {0 B<P><FONT color=#0000ff>int main(void) , l( U3 m# M1 n) r( c- w' B9 V
{
9 L0 R) z& V3 z5 H& U, zchar *str = "This is a test string"; </FONT></P>
) y* M: S1 P8 w<P><FONT color=#0000ff>clrscr();
, d c4 Y3 g2 P& w qcputs(str);
# T3 A) ]' h8 C! }/ w- Cgetch(); </FONT></P># p: L9 \0 @) v2 Z2 j6 O
<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10); ; \3 h9 Q8 T5 t; f+ H! }0 } i
getch(); </FONT></P>
; F+ c& b E. T8 J- r<P><FONT color=#0000ff>return 0; " l6 B0 i n' m# ]9 n5 T! ]
} - C( i9 i; b! }1 [* O" d
$ N3 h3 Q- ~1 P& X7 T0 n</FONT></P>
: x6 \. q: H X<P><FONT color=#ff0000>函数名: moveto</FONT> 8 Z! s" ?; t+ R* S3 U
功 能: 将CP移到(x, y)
/ O3 Q$ {' _# i0 m# I8 n/ I- I1 c: A7 s用 法: void far moveto(int x, int y);
/ d. R4 A& o; ] h6 e1 w7 S; p% V程序例: </P>6 @, [5 c) {! x9 K7 e
<P><FONT color=#0000ff>#include <GRAPHICS.H>: ?1 [: e9 P- e# R: f
#include <STDLIB.H>
8 x h2 b, S) \% Z#include <STDIO.H>
5 g) q4 n5 X8 P" q2 Y E* A/ c#include <CONIO.H></FONT></P>5 ~: R/ B$ S( L$ @% S; L
<P><FONT color=#0000ff>int main(void) 5 o! j: N9 M0 S" G7 a8 i: L: f
{
$ m/ n2 C7 v- {) z# ^/* request auto detection */
! c6 ^; z, ^9 x8 i9 ^' Oint gdriver = DETECT, gmode, errorcode; % A) F* ?6 Z G3 y1 c& f/ K
char msg[80]; </FONT></P>
r4 m+ E0 K; D9 T6 W+ ]& l T# t<P><FONT color=#0000ff>/* initialize graphics and local variables */ & ^* V8 ~2 ^/ E" m$ A1 K2 y: p
initgraph(&gdriver, &gmode, ""); </FONT></P>
3 N3 A* J2 Z) b9 A, p<P><FONT color=#0000ff>/* read result of initialization */
' l' ]8 I7 D" R- Terrorcode = graphresult(); 0 I2 o. S7 i: E/ c, F9 J
if (errorcode != grOk) /* an error occurred */
1 \& G/ T% W7 t{
+ v, `5 j' A) ?" v9 H' Wprintf("Graphics error: %s\n", grapherrormsg(errorcode)); ! t2 q @" ^7 f) E: E' {5 f) x
printf("Press any key to halt:"); 9 ~- Y4 D# w+ i9 c
getch();
% V& J6 w% L- u4 C9 K: N) J9 @5 Pexit(1); /* terminate with an error code */
& v2 x9 s: N4 B' ^& T7 w} </FONT></P>
% }% z. L( j( n* H% Q# i<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
/ e7 P, K" S4 g: z( Umoveto(20, 30); </FONT></P>
7 C4 Z# Q: Q! [; q<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ 5 I* p3 f; U: {, ]+ Z) D- f
putpixel(getx(), gety(), getmaxcolor()); </FONT></P> Z0 Y5 ]% h5 @# I6 k% e* s, z* D
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
) ]% E& B# ~! w8 x: ]. x1 {sprintf(msg, " (%d, %d)", getx(), gety()); E6 }) {5 N, R1 v8 b
outtextxy(20, 30, msg); </FONT></P>
/ j5 ~+ I# r1 _% _- B |* Z2 N, e<P><FONT color=#0000ff>/* move to (100, 100) */
$ d) l: B$ t0 X! Gmoveto(100, 100); </FONT></P>0 `) _% x8 }! a6 n0 ]3 P
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ 1 z# J. W/ u- @; M
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>/ t$ [" _4 X( Z! S
<P><FONT color=#0000ff>/* create and output a message at C.P. */ 8 t% W& k3 h* l
sprintf(msg, " (%d, %d)", getx(), gety()); + Y) F! c! c- B( s' U9 n* K. _0 j( i
outtext(msg); </FONT></P>
+ U. s1 P5 J* q* B% c<P><FONT color=#0000ff>/* clean up */
; ~% d; Z0 _3 s$ h$ igetch(); 6 }& i" l7 C2 ~8 _; s
closegraph();
# i: h( y- G u. n+ j! x- Mreturn 0;
/ h: [* N/ k0 k) R U9 g} 8 m q. f- S4 m/ r% \
</FONT>+ C. f1 [9 P& \, g5 R# W. W& u1 v
</P>2 Q, @# E6 N0 z
<P><FONT color=#ff0000>函数名: movemem </FONT>
) T, ^/ o2 t5 Z) B1 D; |功 能: 移动一块字节
8 p: C* A7 n* g% `3 M' Y用 法: void movemem(void *source, void *destin, unsigned len); ; k+ ~9 V4 F' B! y9 K- @ N( v
程序例: </P>' q2 S; w- T& F% p+ M
<P><FONT color=#0000ff>#include <MEM.H>$ l6 f$ b5 D8 p! _ a8 O: g
#include <ALLOC.H>
O6 J3 p, \ K$ Q#include <STDIO.H># ~! i. U" `: |: L' ?
#include <STRING.H></FONT></P>5 R) A6 m8 m* e+ i, m/ D) G
<P><FONT color=#0000ff>int main(void) * X7 p! Y9 N4 _ W! t
{ 8 a3 p& T& G7 D) U6 W U
char *source = "Borland International";
: b6 ?! a6 E9 v, i( E( achar *destination; 5 f3 Y4 V6 u+ ~! r; ]! ]
int length; </FONT></P>
: j7 |+ \* M3 e7 Q! g<P><FONT color=#0000ff>length = strlen(source); % W: o7 M% J) `( ^$ E( `
destination = malloc(length + 1);
1 }: n% ~4 ?6 e: U+ Jmovmem(source,destination,length); 1 h8 F6 i, K. ^5 l# w8 a
printf("%s\n",destination); </FONT></P>
) C8 j/ W* k: c/ Z/ h. s<P><FONT color=#0000ff>return 0; * I3 z& ]+ t& | [9 p; W6 `" u
}
) e* w/ L) P& ~: a
7 n3 b b8 u) {</FONT></P>
7 y: k. [ }# c$ ]* }8 \<P><FONT color=#ff0000>函数名: normvideo </FONT># F" ?1 ?! R1 Z; v# ?5 w+ ?
功 能: 选择正常亮度字符 , s& R) K0 A; x! Z \
用 法: void normvideo(void); # f6 X# Q* h1 x; t
程序例: </P>
* r4 ?( d' `" q$ ]& v<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>: J# Y! F9 i" T5 q. |5 q) M( V
<P><FONT color=#0000ff>int main(void)
" Z3 T( A0 P* h) H{ 8 a" K2 x5 c! L" R- I4 z& C$ G( v
normvideo(); ; k; r: p9 H. \5 y. T& v4 y
cprintf("NORMAL Intensity Text\r\n");
6 @* U! [5 [) S$ q, H! ?+ t2 Breturn 0; 2 ] M& H" o- p6 p8 o! H
}
, Q# w- I* F8 c) j1 U7 m. R+ i2 j0 ?% U1 P: i& L
</FONT></P>5 ~5 h% Z1 W- ?+ e2 }
<P><FONT color=#ff0000>函数名: nosound</FONT>
) ?/ b, z& a6 m功 能: 关闭PC扬声器
7 G" J# ?! L) M7 g% w0 `2 B用 法: void nosound(void);
5 u: J6 o0 U) W* l% ~: k B程序例: </P>
& L8 V2 W$ J& @! h/ R3 O<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>/ k8 t4 G7 V) C( h& z
<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity. ! J5 i& b# j# L2 z4 C0 R
This was determined empirically in Australia, where a new factory 6 M9 w: G/ B& m& |' m
generating 7-Hz tones was located too close to a chicken ranch: ( F, f3 c- Y: C+ O$ c' T
When the factory started up, all the chickens died. </FONT></P>
1 L0 l9 I, s3 }3 V<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone.
- v7 \; m# h# R, r*/ </FONT></P>
0 ^1 p3 g" {6 o<P><FONT color=#0000ff>int main(void) 7 N$ ~$ S4 q( H2 Z
{
. w# j1 }& M3 N3 D4 A Tsound(7);
$ J7 r$ c, h$ N# A9 Ndelay(10000); 1 P+ J! [8 `1 a* w! j- N9 Y* S
nosound();
# U$ L$ j8 m. |$ R9 x0 E8 d% S}
, n" t3 R; d/ l- z( V5 o</FONT></P> |
zan
|