- 在线时间
- 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>
+ ~0 _: X+ @* W+ q< align=left><FONT color=#ff0000>main()主函数& I; m% z. k/ N0 Z6 S) m5 p$ O- {0 i8 K
</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某
* H- j7 k! k# ^/ M个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 + M6 S+ Q' ?; L+ y, @4 G2 m! }* V
在哪个地方, 以下几点说明都是适合的。 + A9 ~$ v5 N) }- M
<FONT color=#000099>1. main() 参数 </FONT>
+ V. J, R2 j( G7 p2 b, j在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
5 V) d- n4 w7 J& j1 k y) S* argc: 整数, 为传给main()的命令行参数个数。 ) T U% S% M9 {8 I- o
* argv: 字符串数组。
2 b* \, b, \: y7 \% |9 j在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0 2 [( t. E6 [" V) a' |
以下的版本, argv[0]为空串("") 。
5 {5 }& t. n8 w$ f5 A" |$ M A8 eargv[1] 为在DOS命令行中执行程序名后的第一个字符串;
" ?# K5 E4 s) \9 p8 g; t- [8 ^8 Aargv[2] 为执行程序名后的第二个字符串;
6 R4 k1 V5 h$ \... : B- j- n8 f/ ]8 ^
argv[argc]为NULL。
& b" Q Q- ]+ X- r3 K2 r*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符 : _# Y8 ]& t G
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C: 3 n U# v# S$ L( M# D1 d i8 n* r
\TURBOC(对于PATH) 或YES(对于87)。
) g( t& T! a' O! M# J# _: q0 LTurbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中 - D @ l3 F1 a; Z1 l
说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序
' d8 [& a o3 A! E; }7 W% _的局部变量。 2 |+ _' ~( M+ F2 j, b/ e
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下 % B( x- r( \/ X" r1 I `' \ g
的例子:
4 G2 A5 C5 B0 W2 o, J<FONT color=#0000ff>main() 9 r( h' V' t( {) E
main(int argc) " u% [& m+ l6 `* n" N: x( L
main(int argc, char *argv[])
" n3 u: _& M8 J( pmain(int argc, char *argv[], char *env[]) </FONT>3 Z. U/ \+ T; r7 u' K! Y& [
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
" W2 p5 s0 m$ h' X2 l+ W- l7 y用argv[]的情况。
p: s$ ?9 h: O2 ]以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数: 7 H' A$ J1 H0 @# W( ^
<FONT color=#0000ff>/*program name EXAMPLE.EXE*/
6 e/ [8 z3 }5 p+ O. q. `#include <STDIO.H>2 \4 e8 I+ Y- ?* |4 ?
#include <STDLIB.H>
0 @; C0 t7 f7 O+ Zmain(int argc, char *argv[], char *env[]) 7 o5 f8 [! @) f) z3 q
{ ; U1 J8 l' G' M7 Q4 e, O" S0 R( k
int i;
+ f& M5 P+ z, i: R$ _% v. @printf("These are the %d command- line arguments passed to % _0 U8 x4 X+ h `6 [; f* E
main:\n\n", argc); - g2 e9 a1 @/ H% v
for(i=0; i<=argc; i++)
& v- K8 Z+ ~; N) }$ ~( y* oprintf("argv[%d]:%s\n", i, argv);
+ e: f& r. |7 N1 Xprintf("\nThe environment string(s)on this system are:\n\n"); 5 x' V' N: e+ i7 E3 A% C$ s
for(i=0; env!=NULL; i++) 3 V/ Z+ |4 i9 F2 P
printf(" env[%d]:%s\n", i, env);
1 {. M6 Z1 S9 j! e} </FONT>
b% m! G3 _/ t4 Z如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:
% }7 c) d& t- i% w/ z$ nC:\example first_argument "argument with blanks" 3 4 "last but
: ^8 }( d i( \7 `) Mone" stop! ( v! q3 L8 M1 ^! E- L( t: p
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument 9 U) Y& r. X+ J5 Q' c1 |
with blanks"和"Last but one")。 $ Q* s, m% M; s
结果是这样的: % B; [ l5 }# G
<FONT color=#0000ff>The value of argc is 7
( A. m- N! }, F6 p) S" H3 G9 \" E- GThese are the 7 command-linearguments passed to main: K+ d: k0 U2 }2 Q- P# m; Q, w" \
argv[0]:C:\TURBO\EXAMPLE.EXE - O, o# L+ D) Z- T0 ^" j% C
argv[1]:first_argument
; L* m+ [( i0 c7 fargv[2]:argument with blanks , Q( ^$ @" }# C' ^, a- T" M1 X
argv[3]:3 # \5 g, s' d& H# V6 L, z
argv[4]:4
) }1 T' o2 A7 l2 E$ g+ |# {) Xargv[5]:last but one
* V* N/ a; B9 V" \5 Cargv[6]:stop!
! C h7 b6 K) v2 R) Oargv[7] NULL)
: h5 m; x- ^1 Z! G- ]8 i/ E" Y* pThe environment string(s) on this system are: . p7 Y7 @3 K6 R4 Y; h
env[0]: COMSPEC=C:\COMMAND.COM 6 f; T# w+ j1 A! q) ], {
env[1]: PROMPT=$P$G /*视具体设置而定*/
6 j& e( p% B: n7 Henv[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ ( ^$ z' d9 S v9 U- `" B. f' I) V
</FONT>9 z; H) |# c1 K# c4 T) S
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
( [% w. u9 p6 d括参数间的空格), 这是由DOS 限制的。
; R, f5 v- y3 e$ |7 K$ H; \, p</P>% b" l3 o) Z. I
< ><FONT color=#ff0000>函数名: matherr </FONT>
7 c2 x8 k& e! Y功 能: 用户可修改的数学错误处理程序
/ N% y- w. X4 _- i% V9 z用 法: int matherr(struct exception *e);
, ]& F) g5 F& X: z2 o程序例: </P>
0 r+ f* d9 y4 i" G0 x2 ~+ I< ><FONT color=#0000ff>/* This is a user-defined matherr function that prevents
+ F; e. `2 r7 G# T+ Oany error messages from being printed. */ </FONT></P>) s2 b/ N! x# ~2 u6 M3 p. }
< ><FONT color=#0000ff>#include<MATH.H> </FONT></P>) }2 A7 K- _7 B! `3 s/ M c
< ><FONT color=#0000ff>int matherr(struct exception *a)
$ N# ^% \8 @3 U5 k$ u o{ 1 i( w* K+ o" `# |
return 1; & l6 |( n; L: P* g
}
5 N7 Z {0 [+ {3 p: q, H5 {</FONT># V+ C" S( M5 a; p) D
?7 y" E/ p7 N O* m</P>8 h( N5 C4 X+ |: U5 c" a
< ><FONT color=#ff0000>函数名: memccpy </FONT>
4 {8 `* F# C# L; E功 能: 从源source中拷贝n个字节到目标destin中
( `$ u4 Y$ Q# f% _5 B7 l5 m7 [用 法: void *memccpy(void *destin, void *source, unsigned char ch, + o- H& v( G: Q# Y, s# e% B
unsigned n); , [( W' ]$ A* s2 H1 d/ z
程序例: </P>. ]. o$ @% J. P7 Y( {* ^$ c
< ><FONT color=#0000ff>#include <STRING.H>
) h6 w1 G8 o+ B# j3 W, N#include <STDIO.H></FONT></P>* E3 z2 J& W$ r& _; z# L. o4 p$ Z4 v
< ><FONT color=#0000ff>int main(void)
# m+ k' E( x& M! B( q X0 H- p{
. M: F& B# }9 ?( \% ]4 f2 Z6 Mchar *src = "This is the source string"; . J& {& z: z4 i% `
char dest[50]; ; p* t( G! e' y W' M
char *ptr; </FONT></P>
, m: J: k7 e7 F< ><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>
( D4 H/ G) i7 @4 I9 ^" i% t< ><FONT color=#0000ff>if (ptr)
) S8 M5 |9 T) f0 n* R- i2 X( z{ 9 P# X+ g0 h/ p. o
*ptr = '\0'; ; l& C6 \0 \) @ q) p' u% }
printf("The character was found: %s\n", dest); 0 s9 W% M6 t$ T( ^$ W( z; n. W
} ( b2 u; ^ K4 h6 X8 \/ N/ g/ k
else
# ^5 _8 f9 _- W- S8 aprintf("The character wasn't found\n");
% T2 o$ R9 q; j8 ]6 mreturn 0; 4 f8 j. T) A; _- p
} " ~6 C- G9 `. s. L* H
</FONT>
' r- `. ~* y3 D) T</P>
" { O q. o% S1 q* A6 }6 g4 d1 ?< ><FONT color=#ff0000>函数名: malloc</FONT>
' _3 R9 y8 Y) ?2 H( V. Z9 I功 能: 内存分配函数 A" K- Y; J4 [2 G7 r, s Y- _. E
用 法: void *malloc(unsigned size);
1 o6 r' ?6 l f9 Z {) P' u程序例: </P>/ x! F" N) D+ j
< ><FONT color=#0000ff>#include <STDIO.H>* S5 v$ ]+ }% ~* ?& r
#include <STRING.H> t* e; Y5 g" a4 a7 o9 V, l5 M
#include <ALLOC.H>
- y& n; O3 m$ A' Y# i g& C#include < ROCESS.H></FONT></P>
/ R9 e" F$ v7 D, J: O$ m< ><FONT color=#0000ff>int main(void) 4 E: [7 y- l6 A# a- b* U
{
" P; m ^6 k% S- o+ W2 w; x( Z' Z* }char *str; </FONT></P>6 ?, ~; k! V0 @' {) F+ U% e
< ><FONT color=#0000ff>/* allocate memory for string */ . V$ X! t0 V( h# L" L2 w
/* This will generate an error when compiling */
6 G* P3 X! x' X1 D: |/* with C++, use the new operator instead. */ + w! _) B$ o m- a! H
if ((str = malloc(10)) == NULL)
! D- o* E4 M5 ^+ A$ W) W{ : M6 Z& {/ L: ~5 [7 X
printf("Not enough memory to allocate buffer\n"); & E9 f) m( A- z# g( S u0 V; Q
exit(1); /* terminate program if out of memory */
, |0 t) X" u2 O5 [8 w0 Q' o} </FONT></P>
% \* i0 y$ z# E6 P< ><FONT color=#0000ff>/* copy "Hello" into string */ . Y2 L5 B' x8 }4 I) [# }* b
strcpy(str, "Hello"); </FONT></P>% ~; x# h$ }9 P9 r
< ><FONT color=#0000ff>/* display string */
6 f3 r2 m! U @! i0 J+ Hprintf("String is %s\n", str); </FONT></P>) Z; v* |4 h p; h, A: ?9 E
< ><FONT color=#0000ff>/* free memory */ ( n: c2 c0 T6 d1 z' ^/ U+ l+ `
free(str); </FONT></P>
7 W1 f1 p$ V) V1 r* t2 ?< ><FONT color=#0000ff>return 0;
% i7 F4 w/ @2 H/ P+ C% w}
* H1 o: k" U( s) f1 m$ [6 W _5 J& v2 Q- W
</FONT>7 g$ g6 _7 g( U
</P>
# _9 z9 f& [& _9 }/ @7 ]7 ^" O< ><FONT color=#ff0000>函数名: memchr</FONT> 4 K/ Y" m7 A1 w |) R5 L i$ z1 ~7 D
功 能: 在数组的前n个字节中搜索字符
, ~) a+ M3 A) P! G$ J4 E b; V5 Y用 法: void *memchr(void *s, char ch, unsigned n); : B9 u& T5 o7 ~$ V0 A4 w# C0 B
程序例: </P># g* r: P( Z( o4 ^9 i3 `' Z
< ><FONT color=#0000ff>#include <STRING.H>
8 a8 M- L+ X; Q. ~8 f#include <STDIO.H></FONT></P>
5 ^) l/ V/ z% Z, y5 n" O2 [7 ^6 k< ><FONT color=#0000ff>int main(void)
0 H7 M7 \1 Y3 _9 Y' o{ 9 M; p8 L3 A# O3 K9 U2 x4 A. q. F8 r
char str[17]; # Y& t6 I- ~* X0 E; T/ m* \) p+ k
char *ptr; </FONT></P>4 C+ |) \/ U0 Z7 O9 L# C
< ><FONT color=#0000ff>strcpy(str, "This is a string"); ( }. m" k- I/ z F* z! f
ptr = memchr(str, 'r', strlen(str));
6 V4 ]4 Q7 ]% s8 b& R. E" @if (ptr) . n- C1 n/ U- k/ q, o* c
printf("The character 'r' is at position: %d\n", ptr - str); J! P2 }7 M9 u% _- R7 o
else # K) q9 N+ Q7 ]
printf("The character was not found\n");
" V% K p3 w4 S+ O, m$ w: s% freturn 0;
" c9 H3 a: z u" }, a0 [} , ?/ N0 K5 T. T# Y
</FONT></P>8 `9 ]& I' l8 d; G( }: P# u0 Y: `
< ><FONT color=#ff0000>函数名: memcpy </FONT> {& H. q4 S7 A- L
功 能: 从源source中拷贝n个字节到目标destin中
4 U' i7 d( q( l" @用 法: void *memcpy(void *destin, void *source, unsigned n);
8 d& T& W0 @* _% m5 t9 k3 F程序例: </P>
$ g# g5 o% H5 a8 b' }& T0 v< ><FONT color=#0000ff>#include <STDIO.H>
7 V( }' l3 |8 e#include <STRING.H>
* l* j- K2 b7 V( y' F) V, J; Vint main(void) 9 e9 U7 j m% E! x
{
3 f' R& i/ g$ m1 }) @. R% [4 Achar src[] = "******************************"; 7 b( {2 o& `6 h% \9 O) r5 o: |$ K5 U
char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";
$ m7 k* d9 N, R% _char *ptr;
$ o9 c. T+ p. I9 s* `; Y2 T- [printf("destination before memcpy: %s\n", dest); ) ?0 `" n) x/ a
ptr = memcpy(dest, src, strlen(src)); . W( z' |- n: f6 _: S
if (ptr)
1 ]; A" R, M3 }) X# Vprintf("destination after memcpy: %s\n", dest);
$ c% F- \; Q$ Z2 M- U: ~- Melse
1 i I/ m" U% I9 bprintf("memcpy failed\n");
4 D$ w: j0 h" x9 i' Greturn 0; ( O5 X' i; i2 @; U B: f. _0 l9 w
} 9 w9 t( Z* O/ p
</FONT>$ Z: Y& l1 P1 S) q* U' ^
</P>% C0 t- i2 }/ a+ s. S6 I Q% I# V
< ><FONT color=#ff0000>函数名: memicmp </FONT>
. H, w; P' W) L) B9 K7 E8 Z功 能: 比较两个串s1和s2的前n个字节, 忽略大小写 # V/ Y/ Y$ Z- u
用 法: int memicmp(void *s1, void *s2, unsigned n); : y6 e* v7 A; f. K- G5 X! U
程序例: </P>
0 I0 c: X, t( ]. p, L' R6 A< ><FONT color=#0000ff>#include <STDIO.H>* C& {" y* F9 }$ g" P: c9 P
#include <STRING.H></FONT></P>
( Z6 T% S$ O& J1 m2 A( A: w# Z< ><FONT color=#0000ff>int main(void)
/ \, T z3 S/ h% D% r X B+ [' _{ 0 c+ Y6 Y, h, \8 S* u
char *buf1 = "ABCDE123";
1 f. c. C6 p+ z7 n( E9 Mchar *buf2 = "abcde456"; * c! x$ Q) x7 o% x
int stat;
S/ S+ C- k5 ustat = memicmp(buf1, buf2, 5); 4 H! L& l6 l" h0 N' }; C a d `* i
printf("The strings to position 5 are "); Z+ W g( P3 a, r7 H
if (stat)
, u0 f6 y- z' z8 {: y) qprintf("not "); * H) f) D2 q6 V: w5 L
printf("the same\n");
% B! K v6 [3 l5 `return 0; " q2 ]6 w I. L! D) A
}
; c- `# I5 k# P4 M; A. `</FONT>
* s2 |; N& H8 D ^</P>6 I1 \' q; [7 f0 j3 C* U
< ><FONT color=#ff0000>函数名: memmove </FONT>9 D5 L" X9 l! s0 w
功 能: 移动一块字节
5 X7 h+ H8 x& G% w* j2 L用 法: void *memmove(void *destin, void *source, unsigned n); ' ?% Z) p$ C3 t0 ?
程序例: </P>
0 s" C2 Q2 h* A, i4 i% y<P><FONT color=#0000ff>#include <STRING.H>
2 V+ a$ d X7 g: G# t#include <STDIO.H></FONT></P>
2 H, G" i+ B) q/ U% f<P><FONT color=#0000ff>int main(void) 2 v$ f- d8 M4 u: g6 T; i' w
{
( w2 y% m6 w1 M% X2 j7 Schar *dest = "abcdefghijklmnopqrstuvwxyz0123456789"; 1 J( q7 a% v/ S8 c
char *src = "******************************";
# V$ P7 w( ^2 A5 }2 w2 Qprintf("destination prior to memmove: %s\n", dest);
3 q# B: F( e0 o( tmemmove(dest, src, 26); $ m/ C; Z; ^6 x7 k0 S* m
printf("destination after memmove: %s\n", dest);
0 T" q$ F& U8 u) d! W6 jreturn 0; . J+ A) i) h7 {9 E# L9 s; g
}
; g: j. T1 p, y" N3 `/ W7 W: V
0 v% w8 ]- |* }3 q5 H( E</FONT>9 c0 B! t- K' t$ f# F
</P>
/ J5 ~& @; ?- f0 _- r: s! e<P><FONT color=#ff0000>函数名: memset </FONT>: J. {, p& `9 ^. n/ {
功 能: 设置s中的所有字节为ch, s数组的大小由n给定 $ f% [9 `: p, W( X/ E( } g4 [
用 法: void *memset(void *s, char ch, unsigned n); . ]; h, T. X0 ^
程序例: </P>0 G1 Q3 U& u7 D* g3 o4 `
<P><FONT color=#0000ff>#include <STRING.H>
$ D% }8 [- |) E, l#include <STDIO.H>
y) A! T/ z8 B' r% w#include <MEM.H></FONT></P>% y5 T; `0 f- S
<P><FONT color=#0000ff>int main(void)
7 u% Q9 {* R" m9 L{ ( p1 |4 N7 I( g8 K8 _
char buffer[] = "Hello world\n"; </FONT></P>, Z$ J: D0 x6 O: g, T, v
<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer);
+ t: x6 K F' {$ Bmemset(buffer, '*', strlen(buffer) - 1); ) g$ \' _( g: |1 ~9 {- Z
printf("Buffer after memset: %s\n", buffer);
) S' W* k5 S& G0 K! Dreturn 0;
5 l( O( b' x- }1 \0 [) B' s4 U} </FONT>
& U5 H1 ], _/ ^% [% s* R, a- ~6 `
h. e. J; V, d</P>6 ?2 {) F) H X. A# X( d' [ K
<P><FONT color=#ff0000>函数名: mkdir </FONT>2 Q* S3 R6 I. R0 g: E$ C0 C* ]
功 能: 建立一个目录 7 N! A: v$ p, I; Z8 b. p
用 法: int mkdir(char *pathname); - ?. X& v7 U: e8 G, o: {
程序例: </P>
& p- y: `( w. T* ~; Y<P><FONT color=#0000ff>#include <STDIO.H>
( C# ]! O% [! s6 e. q, Q#include <CONIO.H>" `/ j ^4 z; B7 g% W+ \- y
#include <PROCESS.H>
+ v+ G; s- x* p; c4 u/ Q% r+ V#include <DIR.H></FONT></P>3 Z: Q+ m2 N# Q/ p$ t. U V
<P><FONT color=#0000ff>int main(void)
) n4 |3 [$ p t. @. }{
; y, X! e+ ]) p& k3 H9 i$ zint status; </FONT></P>) a/ F" A4 P/ Q# D: q
<P><FONT color=#0000ff>clrscr();
8 ]" [2 M* o1 f4 q4 Astatus = mkdir("asdfjklm");
1 Y' P" D! p8 V) H1 P0 j(!status) ? (printf("Directory created\n")) : 4 M% Z; V- o+ i7 ]0 ] o! @
(printf("Unable to create directory\n")); </FONT></P>
4 @- e3 h* e5 f0 Y<P><FONT color=#0000ff>getch(); 1 m* W+ z6 C7 h, M
system("dir"); 6 m$ J; k9 N2 ^) S- L" I
getch(); </FONT></P>' D$ E" `1 g t3 a8 X; j. l
<P><FONT color=#0000ff>status = rmdir("asdfjklm"); 3 k ]8 s, p d, T6 _
(!status) ? (printf("Directory deleted\n")) : 6 y2 b. L8 S5 Q8 ^( q" `4 N/ f
(perror("Unable to delete directory")); </FONT></P># i/ y; U% i4 G& i/ t2 @! X
<P><FONT color=#0000ff>return 0; 9 Y6 S. Z6 t9 [8 c& L2 |
}
8 w8 @$ d4 T" M' p6 a9 R2 k# T# @% }! O
</FONT>
/ ^& X l3 v( F3 n! X r! {</P>$ L U! v/ n, [- J9 k$ a8 K
<P><FONT color=#ff0000>函数名: mktemp </FONT>3 J9 Z! h3 J: w' Z+ |. x& D
功 能: 建立唯一的文件名 5 |! X, ^+ o. S6 f3 T8 w
用 法: char *mktemp(char *template); ; C, o4 ^8 x* U
程序例: </P>. P; D5 j- K0 Z* _. J. a$ D
<P><FONT color=#0000ff>#include <DIR.H>
* g& a- o4 i9 ^& |/ F" ~#include <STDIO.H></FONT></P>; K1 Y2 u/ M6 F4 @
<P><FONT color=#0000ff>int main(void)
$ Z$ q( F* b) ?3 Q) b2 H2 z. F{ . J5 M# X! a! p6 _( j
/* fname defines the template for the 7 M, z. x1 W( U) f9 K! G
temporary file. */ </FONT></P>0 W/ X* Y# F' h
<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>
8 D, l: {2 Y' w; T/ m8 n* Q<P><FONT color=#0000ff>ptr = mktemp(fname); - n! p1 W) D+ l l
printf("%s\n",ptr); - K% r( h5 X% M4 E1 i3 h, W3 a, P: `
return 0; $ c Z# I* w& U e
} & }4 B h2 A0 t: G
</FONT>
: E8 @/ m" O! ~9 |</P>: g& G; T9 _6 M
<P><FONT color=#ff0000>函数名: MK_FP </FONT>
- |8 E- x' x. b3 H* _功 能: 设置一个远指针 0 Z* V2 u- ~/ o3 ^5 Z7 p+ {
用 法: void far *MK_FP(unsigned seg, unsigned off); G$ E, c, k8 u8 O+ F' E
程序例: </P>" p9 V5 {4 A/ ]% M8 S. c6 }6 R
<P><FONT color=#0000ff>#include <DOS.H>
8 Q) @% X4 w' _4 g9 N' n#include <GRAPHICS.H></FONT></P>
( h1 U) `2 x' S% \1 |% O<P><FONT color=#0000ff>int main(void) 8 m, N) S/ _% C
{ 5 u0 [7 M" w0 K. V# ^
int gd, gm, i; A4 p. Z. F8 g
unsigned int far *screen; </FONT></P>! N) }8 a, ~( x3 k
<P><FONT color=#0000ff>detectgraph(&gd, &gm);
5 u; v, a$ I1 Gif (gd == HERCMONO) 0 x2 n0 f4 B$ x' k% B% _3 M
screen = MK_FP(0xB000, 0); ( y8 x5 c7 V; s* b+ i+ _# k
else
Z- O) x" `9 B4 W: A3 Jscreen = MK_FP(0xB800, 0); 4 @. o8 K: G8 Y
for (i=0; i<26; i++) * F8 y! ~' ?7 N5 M& ]' k1 P
screen = 0x0700 + ('a' + i);
. c" t/ g; {% x# C |return 0; ; O8 ~, f$ r9 L/ V1 d6 f
} 5 |; \' e' q1 x* W7 G
</FONT>
7 _$ M2 \4 k4 H) _8 u @7 X</P>7 O+ q. B7 k$ E9 A! W9 k+ k2 P
<P><FONT color=#ff0000>函数名: modf </FONT>4 g m ]! a* w m8 ^' A
功 能: 把数分为指数和尾数
( N3 _1 K% q0 V7 f! z# V* p, G用 法: double modf(double value, double *iptr);
5 x9 v; T1 {1 c4 `程序例: </P>
! L& J1 n+ x2 i5 O( c& J/ j<P><FONT color=#0000ff>#include <MATH.H>
( {7 \! K1 g% R; n! K#include <STDIO.H></FONT></P>
# q) X5 [3 p- T% B<P><FONT color=#0000ff>int main(void) 4 q$ h* ]6 |; k, ]9 `. M
{
' z7 I9 h0 i$ Y: zdouble fraction, integer; 2 C& a% r# V) O0 @! u6 _9 c8 F
double number = 100000.567; </FONT></P>2 u6 s! p- X. u( o2 L
<P><FONT color=#0000ff>fraction = modf(number, &integer); : n1 m- g! y+ I# M- k8 i
printf("The whole and fractional parts of %lf are %lf and %lf\n",
, v' {$ d/ u/ v- Y, qnumber, integer, fraction); 9 o& @$ i: j1 e
return 0;
/ V2 l l( G' E9 q; a0 E9 y5 t1 t/ ]} </FONT>
L. `( t( a1 E. A* `* T1 H* [; x: V5 |+ G0 R
</P>
* G. w9 E: Z' l7 F; ^" z* z<P><FONT color=#ff0000>函数名: movedata </FONT>
% U# t8 ^2 T. p. V! ~/ V功 能: 拷贝字节
7 E& E. e; g% E. s用 法: void movedata(int segsrc, int offsrc, int segdest,
! q8 z: B6 ^4 l7 W- ~int offdest, unsigned numbytes);
: r. U( {0 h' t/ |程序例: </P>( w" W6 F4 L3 K
<P><FONT color=#0000ff>#include <MEM.H></FONT></P>
' r8 _" _ D" T. k# [<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>
( v3 v s0 F, y1 c- i<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */ # k9 H; L3 A8 H+ Z: }' X" {, e4 e0 w
void save_mono_screen(char near *buffer)
0 c/ O) I ~) a7 v6 M$ ]! L{ : f. E4 m8 O" c! Y- w' N9 z- H
movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);
: |# z8 H) T! T- Y} </FONT></P>
- e. t5 |) _' \* {0 X; r& E/ Q/ A# E<P><FONT color=#0000ff>int main(void) 4 I( o$ S7 n1 u+ b
{
% b/ I m+ |; X. A$ F4 v! Wchar buf[80*25*2];
8 r! B- Q! e1 V5 Ksave_mono_screen(buf);
: G9 X/ g7 |( q8 f9 G1 k/ v}
# l4 q% R. D7 P5 \& m) Q* a</FONT>
/ L) X, H+ F5 u+ f6 J2 M1 a; K& Z, w+ Q0 n</P>, B" c7 z; F5 L r: I) i
<P><FONT color=#ff0000>函数名: moverel </FONT>$ G- W( ?; S4 P4 i5 N
功 能: 将当前位置(CP)移动一相对距离
4 y) a0 P1 G6 N! q) @用 法: void far moverel(int dx, int dy); 1 z* e% A9 c3 f7 D0 [9 u
程序例: </P>
4 U* K: |1 }8 m$ ]* y* w* V# `<P><FONT color=#0000ff>#include <GRAPHICS.H>
# A+ b4 a! o0 i8 F7 D% g) A; g#include <STDLIB.H>
3 E) {: B- x$ d& y/ i#include <STDIO.H>
' e" p2 u7 @& K; E) [0 r- |: X2 L5 O#include <CONIO.H></FONT></P>
$ T- m3 t& d& d! a! B5 B) w<P><FONT color=#0000ff>int main(void) 9 R8 m2 d* A0 B; W9 ^% A
{
0 s; B. K" F; @' b K1 P! @/* request auto detection */ 5 P" I, z% ], c& p. u* [% b
int gdriver = DETECT, gmode, errorcode;
( j ~( Z7 Y, s% u* K' y1 W; ~char msg[80]; </FONT></P>) A& g- {3 ?& n( X+ O. a
<P><FONT color=#0000ff>/* initialize graphics and local variables */ 4 {6 N, B+ s) X+ a% z/ K, Y* [" B
initgraph(&gdriver, &gmode, ""); </FONT></P>6 h/ c! ^! [ n5 G: N9 \
<P><FONT color=#0000ff>/* read result of initialization */
+ e/ G: h* H( Y" j. }% A4 h" X P4 Merrorcode = graphresult();
6 J! g; b* C. W7 U5 L" J/ a* `4 Qif (errorcode != grOk) /* an error occurred */
( K @3 p. A+ p1 p{
, J6 S7 l# i. ~* V7 O7 l( }printf("Graphics error: %s\n", grapherrormsg(errorcode));
$ B! s$ y; K' P% P1 J9 e3 w3 Z" Dprintf("Press any key to halt:");
3 i' S8 S! ~2 f& ^5 o4 J5 Wgetch(); 1 D' k9 o2 E4 l6 P5 j' X
exit(1); /* terminate with an error code */ ) m7 j0 E6 A4 ?8 j. R$ f3 \( R
} </FONT></P>
& H& o" b& y' q1 K<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
/ [5 o/ @. q% T5 J# fmoveto(20, 30); </FONT></P>- ~$ Z; [. { ]% `- n( w) ^
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
1 |" a$ R3 x7 E$ V: oputpixel(getx(), gety(), getmaxcolor()); </FONT></P>! g4 e& _( w( U, K9 Y% }
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ $ q/ c8 [8 S; ~0 o
sprintf(msg, " (%d, %d)", getx(), gety());
! `5 e& i) D+ N6 [& T5 Iouttextxy(20, 30, msg); </FONT></P>
. C1 S( M) a5 F6 m% ^/ o5 U! P5 o<P><FONT color=#0000ff>/* move to a point a relative distance */ 8 o% H$ A( d( d+ f" ]
/* away from the current value of C.P. */
0 c4 T0 R& H# _; |% p0 hmoverel(100, 100); </FONT></P>' V, E9 {" m. h2 R7 P0 S' b
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
3 O$ t$ s: M: ^( C/ l& D( U# Rputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
6 Z t5 e" z- Z. Z! V<P><FONT color=#0000ff>/* create and output a message at C.P. */
# O% [* e4 F5 u3 A; _sprintf(msg, " (%d, %d)", getx(), gety()); ) ^: K, c) j. J
outtext(msg); </FONT></P>. L$ \; H9 e6 M3 X4 Q: @6 l: f( p: H
<P><FONT color=#0000ff>/* clean up */ 8 ^) g ?1 U! s3 L' X# G
getch(); 6 U+ @2 F9 `/ E" E) t/ L+ u
closegraph(); ) C: ~) p% }) J L8 X& E
return 0;
7 K1 L; Y4 Q8 Y. e% [" l2 G} 0 m3 O, F0 p8 K' e
</FONT>. M/ `- ]+ i# v$ Y7 S$ R
</P>" k/ {1 J* d7 e
<P><FONT color=#ff0000>函数名: movetext</FONT>
" G- L9 Z4 d8 r% ?5 v0 C! V7 u功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域 - m+ m" f3 I* ~' z+ v, b; q' |
用 法: int movetext(int left, int top, int right, int bottom, / P1 A; C$ i- h+ X
int newleft, int newtop);
+ C9 e O1 k& B0 w! U" B4 z程序例: 7 H2 @1 @ K0 R0 L; ^1 S3 Z2 H- C/ j
<FONT color=#0000ff>#include <CONIO.H>2 w! s+ V& A9 ^0 p) s# u
#include <STRING.H></FONT></P>" L8 G% j' ^. j6 Y% d. y
<P><FONT color=#0000ff>int main(void) & \' W, d4 d! i
{
0 X% Z! c8 Q; L, T/ j: cchar *str = "This is a test string"; </FONT></P>% P8 l5 m1 }0 R- L8 l
<P><FONT color=#0000ff>clrscr();
% O3 z. V1 r' J qcputs(str); 8 g& ^" s/ j6 p# _6 _# J
getch(); </FONT></P>7 p- l- ?! ^' u0 T9 A
<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10);
# O8 J4 S0 u7 F' f/ Fgetch(); </FONT></P>% P( k o) ^9 C
<P><FONT color=#0000ff>return 0; 0 u7 R& e8 z" }! ^0 ^! Y
} ' J( g' v7 a2 o0 V1 \1 z
! R( {- }/ g9 \2 @7 e</FONT></P>
6 l) p; ?# d/ M<P><FONT color=#ff0000>函数名: moveto</FONT>
: l& P: J+ f/ W/ N* H功 能: 将CP移到(x, y) 1 J" j* j7 }/ H' k* \' {9 o
用 法: void far moveto(int x, int y);
3 y9 q8 G8 }4 g* n' F程序例: </P>
* R! W" a' I5 A<P><FONT color=#0000ff>#include <GRAPHICS.H>
; S7 V9 x$ f3 B( U#include <STDLIB.H>. t+ j' n: r% T0 n: g6 A: D
#include <STDIO.H>3 {$ z3 P7 ^- y1 i' v* r8 z. n
#include <CONIO.H></FONT></P>
, ]% U, v# O1 {# ^3 s0 A<P><FONT color=#0000ff>int main(void)
8 h. i) i, z2 {% K{ , `) a2 G0 T& q5 ?7 a/ A6 y7 p1 Y
/* request auto detection */ 9 ^! _. N' O7 R8 z7 B
int gdriver = DETECT, gmode, errorcode; 3 y6 ?# t+ G( ~, l1 m0 R8 p0 D
char msg[80]; </FONT></P>' c# `3 F# q' c7 D) g6 Z! C' c6 p
<P><FONT color=#0000ff>/* initialize graphics and local variables */ 1 s) t) a% @4 I+ u! Y2 ~' T) |( I
initgraph(&gdriver, &gmode, ""); </FONT></P>
) c; @7 X3 \/ k<P><FONT color=#0000ff>/* read result of initialization */ " Q8 K2 W& m9 O1 y! G; }. T: b
errorcode = graphresult();
; t5 _( K. @9 mif (errorcode != grOk) /* an error occurred */ 5 H/ F& I0 Z1 b. \! S9 ~
{ 3 D) d9 f& }$ s b( U, \6 A
printf("Graphics error: %s\n", grapherrormsg(errorcode)); 3 E9 Y7 f2 Y" I9 @' q' t: i. [
printf("Press any key to halt:"); 1 w _/ l. T! N0 @( ^
getch();
) ?) s6 X6 [1 t# Q2 O" Vexit(1); /* terminate with an error code */ 9 \$ l7 R+ N7 F1 o7 r
} </FONT></P>5 S2 y- K8 F Y/ e# p. L8 S
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ $ b* Q" a" X, R
moveto(20, 30); </FONT></P>1 [4 ^# |) R' `: |. e( E" O% B2 @
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
5 c$ X' K" [& `: P* [( f5 Oputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
7 Q6 v) Q$ ~, `' s: X4 j7 t G<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
8 k% A! l! e1 gsprintf(msg, " (%d, %d)", getx(), gety()); + w" L+ q& e7 {; |) I. j
outtextxy(20, 30, msg); </FONT></P>; e3 P' g- J+ U
<P><FONT color=#0000ff>/* move to (100, 100) */
; [0 O. \5 z3 k8 f9 o. r" w) I. xmoveto(100, 100); </FONT></P>8 c4 c7 K {; V- k, P
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ ; ]; \5 h+ P9 E* S% ]
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>) M3 a. e- k1 w6 ?
<P><FONT color=#0000ff>/* create and output a message at C.P. */
. ~: T- H# f8 U* ]) `sprintf(msg, " (%d, %d)", getx(), gety());
k% N3 w' |# Q, R5 {" ^" U3 r1 S" \outtext(msg); </FONT></P>
' D& B# E- n/ g8 c2 }) x# o<P><FONT color=#0000ff>/* clean up */ 9 Y" \1 z+ s2 |# K! S
getch();
6 Q* h, p0 @+ v% ]closegraph();
/ O( \7 n8 H U0 d8 X W* M3 [return 0; 7 N8 u2 t; T: q' y9 J" t
}
& @9 Z j6 n7 j9 s8 P( \, ^</FONT>5 v* l7 m- B u
</P>
. Z7 y$ E; H0 V<P><FONT color=#ff0000>函数名: movemem </FONT>
. g0 X# R' @) _/ m' q5 b7 {, R功 能: 移动一块字节
- e3 {+ C6 Y# j$ t用 法: void movemem(void *source, void *destin, unsigned len);
( c" _: P f3 K3 g+ ^- W程序例: </P>* \6 g* }5 h5 G6 Z$ b- [
<P><FONT color=#0000ff>#include <MEM.H>6 M! `( S" o q( O! M& ~* v
#include <ALLOC.H>
9 W; d+ b+ I) c#include <STDIO.H>& ]; S* P5 x! w T2 X# N
#include <STRING.H></FONT></P>
; D& K7 P' f. {' e- N/ X) Q5 e& X<P><FONT color=#0000ff>int main(void)
$ y# z8 V1 u% o" H: G{ ! ?, j5 b( h; E6 A2 H1 {
char *source = "Borland International"; , f# X2 E/ {5 I5 f; o2 A* d1 @: a
char *destination;
$ m3 V$ P+ H# |3 Lint length; </FONT></P>
0 J9 P* }0 l) U* G& E7 r<P><FONT color=#0000ff>length = strlen(source); 9 l0 A/ u9 L: Q" |3 _6 U! p( _
destination = malloc(length + 1); ) b: u; [7 N3 ]/ g) V) p) D5 Q
movmem(source,destination,length); ) [1 r# l1 B+ y. r1 q
printf("%s\n",destination); </FONT></P> ]3 A* b# g) O. f* N
<P><FONT color=#0000ff>return 0;
. X# _4 T) E3 K# n2 y} ! z6 F% V, d% M3 K1 d8 i4 S. w. B
. I' l$ [0 ]5 `8 f+ K
</FONT></P>, I. M% r: ]3 r- K% X) H
<P><FONT color=#ff0000>函数名: normvideo </FONT>
' Q5 S) T3 T, {9 y功 能: 选择正常亮度字符
) q+ T" L! F2 i用 法: void normvideo(void); 9 C! H3 J: E; \/ C- _7 q' J! o0 H
程序例: </P>1 _/ A' L9 w, o8 i9 |
<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>& J- L+ j( a: `; K: u
<P><FONT color=#0000ff>int main(void) ' [. I+ w+ k) z3 `2 x" p7 \ [: k" u
{
/ I. L5 a8 |; Z8 }" enormvideo(); ) H( u- ?) @9 ` C. L
cprintf("NORMAL Intensity Text\r\n");
0 @& R1 @* C8 R& R, areturn 0;
5 w. j% C( @5 L1 @( T}
7 H' |/ ^$ H) l8 @6 J4 y
; t1 g8 y3 v" V</FONT></P>
7 e4 k, V9 e. L$ S$ @2 U9 p<P><FONT color=#ff0000>函数名: nosound</FONT>
$ O3 m$ I. G6 k; K& K& o U3 B功 能: 关闭PC扬声器
" Q# k) v! I Z2 X- P# A A用 法: void nosound(void); * `4 K' t9 p, U0 K# G8 ]$ {$ D+ U
程序例: </P>
6 I( D6 p6 j7 s) ^7 u7 b<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>
* O7 h: u7 Y; l, p<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity.
+ [" l2 r: L0 \! V. I: Q0 N: S5 AThis was determined empirically in Australia, where a new factory
% e. Z) V! l( @& q4 O8 F& Y2 egenerating 7-Hz tones was located too close to a chicken ranch: ) A- d; L3 O% f& I' V
When the factory started up, all the chickens died. </FONT></P>% R4 B( p! D5 z0 z" Q* z
<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone. & y: O: k2 ]1 o
*/ </FONT></P>3 k. J% m, q' R) F6 C8 o0 y3 o) e
<P><FONT color=#0000ff>int main(void)
$ U, W: r" F$ X4 _- d{
' z# I# }, h0 ^( e' @sound(7);
, ]# c$ |. }: h2 Ndelay(10000);
+ t( \) }0 G7 Wnosound(); ! g) B, P: h. {: x
}
5 d3 v8 p# g+ [3 ^& U! q: q</FONT></P> |
zan
|