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