QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2922|回复: 0
打印 上一主题 下一主题

函数大全(m开头)

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 02:57 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
< align=center><FONT color=#0000ff size=3><B><FONT color=#cc0000>函数大全(m开头)</FONT></B></FONT></P>
5 m/ d7 _; U, Y, h$ F< align=left><FONT color=#ff0000>main()主函数0 [) q5 O6 b' C
</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某
( ^* q0 f* L) l3 v: E& C; B个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 . [) \; {$ t9 E# \3 S2 w5 z1 Y6 b
在哪个地方, 以下几点说明都是适合的。
& b* X8 K% @/ I3 w<FONT color=#000099>1. main() 参数 </FONT>
" @) n9 m8 `" m* A5 ^# H! y在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。 9 n2 _) q/ X9 {6 A1 G' A
* argc: 整数, 为传给main()的命令行参数个数。
& [: Q1 H- |0 b) j0 G* argv: 字符串数组。
& z4 ]" a8 }, \2 n: L* ?. Q在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0
2 _5 C  b! r, T# u/ a$ t) m2 H以下的版本, argv[0]为空串("") 。
3 {' f) ?7 t; ?argv[1] 为在DOS命令行中执行程序名后的第一个字符串; + L1 K. i" e0 C
argv[2] 为执行程序名后的第二个字符串;
3 r  ~. D3 M& |' E5 ^9 M- Y8 [...
% N/ @" ?' `  \( ^" a/ s3 Sargv[argc]为NULL。
9 U: o& {$ ~  V8 K*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符
$ k, U  f; z9 X/ ^( _- Y2 _- u串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C:
; b. Y3 g4 t0 U\TURBOC(对于PATH) 或YES(对于87)。
, {" l3 u8 Z: qTurbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中 * e+ j1 k+ h5 Q0 B
说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序 6 X8 ~; e& Z1 z  q+ a" c6 P) r. O9 \6 r
的局部变量。 8 c6 [7 g+ c: ^
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
# Y" u4 t7 D% H的例子: " g  P  e. C3 V7 P3 z" g" ?7 j
<FONT color=#0000ff>main() 7 G2 B$ N7 M. c$ M% H: x5 l- ?
main(int argc)
' J0 f( ~. ?+ B5 ?main(int argc, char *argv[]) : T: o5 D# _& c7 _' s. Q9 ~
main(int argc, char *argv[], char *env[]) </FONT>
% `2 s9 N7 k9 S5 h' H$ h其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不 2 B1 h* ]0 R% \, D' b
用argv[]的情况。 ; U4 ?. x0 z( d0 V
以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
& o0 s3 _; P5 H2 S- |% {2 |<FONT color=#0000ff>/*program name EXAMPLE.EXE*/
3 e1 }  `- Q7 D) q3 P6 d#include <STDIO.H>
) X; V/ q! Q; t$ S, C0 c#include <STDLIB.H>
! _( a$ `! B4 K& Jmain(int argc, char *argv[], char *env[]) ; @1 B. q: C: w5 M/ o
{ , L$ j4 d$ X6 U0 A* @
int i; ; A5 ~* k8 Q/ n# V9 [  v
printf("These are the %d command- line arguments passed to 8 N5 R, B. c$ r5 ?) i9 ]. v% _) Q/ V
main:\n\n", argc); 4 ?8 W. N' v# t6 u8 w, n* |
for(i=0; i&lt;=argc; i++) ; L* ^( y8 {9 z* X. B
printf("argv[%d]:%s\n", i, argv);
( M8 w1 r+ w: P, c9 wprintf("\nThe environment string(s)on this system are:\n\n");
# x! l) Q! o3 W8 Q, H" \for(i=0; env!=NULL; i++)
2 W; f7 d- ]" ?2 d3 U, I( c; Q7 S9 Fprintf(" env[%d]:%s\n", i, env); 2 A, S1 @, b. `- H, X! z) G3 D
} </FONT>! |( Y( ^8 i8 a& `7 ?
如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:
1 y2 p5 T3 [$ ?" T( @C:\example first_argument "argument with blanks" 3 4 "last but 9 M5 A5 j5 U, S* P
one" stop! 5 a2 V3 M1 V1 p9 r+ `8 h/ X( u- O# d
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument
( a# z9 R5 }" h. n8 x) \# _9 x% c+ ]with blanks"和"Last but one")。 # Y. i, i* C  M
结果是这样的:
! D( ]  }5 h( w: E8 w" c9 P<FONT color=#0000ff>The value of argc is 7
6 D7 P) q- ]. {  xThese are the 7 command-linearguments passed to main: * t! Z3 I& f) `9 \/ o/ [
argv[0]:C:\TURBO\EXAMPLE.EXE
2 m/ V/ ^% M( d( A3 \! S. Aargv[1]:first_argument
2 m6 Z7 ]. Z; A4 oargv[2]:argument with blanks 1 |2 p& W9 F, |* C* t% ^
argv[3]:3
& [( N5 T% o- x* cargv[4]:4 5 l( [1 n; J( g8 h1 E
argv[5]:last but one
: C5 a- ^- |1 D3 e: C$ u* }argv[6]:stop! ' D  P% r( A5 c$ ?4 v4 r
argv[7]NULL)
0 D! @2 x9 U. b/ J. w9 W8 V% \The environment string(s) on this system are:
  `4 H4 n, v+ `env[0]: COMSPEC=C:\COMMAND.COM - m) b: o4 F" z/ T! Y) d' R
env[1]: PROMPT=$P$G /*视具体设置而定*/ 8 \( h6 K: G. y) e
env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/   A+ M' S' z! m) s% N! ]: g
</FONT>9 v) P& ]4 p; \4 e) i
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
8 `  {0 C* d4 x9 c; `. p4 x; F括参数间的空格), 这是由DOS 限制的。 4 ]! |- f- [" H0 ]
</P>& H( ]8 a# o+ @9 b& b
<><FONT color=#ff0000>函数名: matherr </FONT>
0 P# t; y# [( M& g. }功 能: 用户可修改的数学错误处理程序 # S  i, ]. F0 p: Q0 P7 `4 q0 o1 l! |
用 法: int matherr(struct exception *e);
& N) N7 ~/ z$ J# _# b  j程序例: </P>
1 h+ h& A" Y& b<><FONT color=#0000ff>/* This is a user-defined matherr function that prevents
' `, k7 a, o, `# {9 `& {, L, Gany error messages from being printed. */ </FONT></P>
5 t/ p  e4 Z( x5 D4 \2 B<><FONT color=#0000ff>#include<MATH.H> </FONT></P>; \6 S" b$ H: b; ?, d- U
<><FONT color=#0000ff>int matherr(struct exception *a)
, t) S) x9 r% y{ / |$ \& f% U! F& K8 e
return 1; 5 [$ v8 B& K! l3 }. i2 n2 d2 E
}
5 B  `! C& [, _</FONT>6 v# H' W* z' m1 Z; d
: b- I+ e- K* k" f
</P>
5 p: A, n" d/ g<><FONT color=#ff0000>函数名: memccpy </FONT>
% [$ |$ y9 |; y& J& b% Y8 y  o8 x功 能: 从源source中拷贝n个字节到目标destin中 $ [0 _/ D' @9 ]# t  w6 h
用 法: void *memccpy(void *destin, void *source, unsigned char ch, ' i( m: }1 D) j* f
unsigned n); 7 c: @+ m3 \/ D4 P
程序例: </P>2 p0 ^5 S7 y' ^3 C# @/ j
<><FONT color=#0000ff>#include <STRING.H>7 K) h/ j( K' C8 h! `
#include <STDIO.H></FONT></P>
1 }* `& d$ K- o5 T8 B* L* n" a<><FONT color=#0000ff>int main(void)
5 l- z! P$ m  g; B. R* X8 \{ : E& Z8 H2 g$ a- v, f# S: H7 E& \: W
char *src = "This is the source string"; . b: W4 q/ Z$ P" s7 ^9 D0 E5 {
char dest[50]; # h+ u7 l; g7 u* X
char *ptr; </FONT></P>
5 X* U, q9 r, e+ S# l" D; e<><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>. `2 D. Y/ C. }4 k
<><FONT color=#0000ff>if (ptr) & x+ i  v/ w0 |0 {! x& `4 m
{ : K% _. E" Q. H% c1 I% ^# B
*ptr = '\0';
2 F( R3 v6 m: }7 T/ mprintf("The character was found: %s\n", dest); * w. I% E3 m0 o+ E* e! G
}
" L1 O7 I0 a. P- gelse
3 a, s4 X. }5 eprintf("The character wasn't found\n");   g# z% o  |4 D/ R* x- O1 T4 q
return 0;
2 d- j) b; u/ q8 J* p+ y& ]}
$ |& L8 C1 u- y% o- X</FONT># o* q% v. y4 B
</P>/ a: l7 T3 @. [+ H  R
<><FONT color=#ff0000>函数名: malloc</FONT>
1 [& X0 }4 t$ J& y3 z/ N5 d; L功 能: 内存分配函数
/ H( C9 p0 }2 }- r# f' E用 法: void *malloc(unsigned size); % \) f$ ~! n' a2 ~) @8 F2 L' `5 T
程序例: </P>
& c! M" n6 c+ Q9 V<><FONT color=#0000ff>#include <STDIO.H>
/ w3 h& k4 U- H, Y#include <STRING.H>% y2 u0 ^% G& S( B* v! @% h
#include <ALLOC.H>
/ n) v9 ^' V  r1 o#include <ROCESS.H></FONT></P>
- W+ X# B2 T# a$ X, |<><FONT color=#0000ff>int main(void)
# p8 f2 n0 T+ D+ G{ - L9 q  {: O3 e  X7 q9 Z
char *str; </FONT></P>: u  ^/ D! K6 E5 q. {. n
<><FONT color=#0000ff>/* allocate memory for string */
: F/ d- A9 ^4 x( c. b1 L' H4 [/* This will generate an error when compiling */ 6 n8 n& Z5 A9 p4 w3 }
/* with C++, use the new operator instead. */ ) s! }( o& M' A0 p+ {7 R
if ((str = malloc(10)) == NULL) * k& B: {  R* r7 ^+ z
{
- f9 y3 I' {; Q5 e8 P: @; Eprintf("Not enough memory to allocate buffer\n"); ( i6 d+ d; y* D& V6 w
exit(1); /* terminate program if out of memory */
3 C# V; j; `/ ]+ u} </FONT></P>+ F, w/ v) w$ j+ w
<><FONT color=#0000ff>/* copy "Hello" into string */ ! x6 `2 _% u: r# ]3 _
strcpy(str, "Hello"); </FONT></P>
% e1 ]" U- b/ r" P8 |<><FONT color=#0000ff>/* display string */
- f! g1 t. x2 H7 r* |7 F/ O0 k5 I6 Qprintf("String is %s\n", str); </FONT></P>" c; c* i5 a5 o8 d4 P* J& T9 F
<><FONT color=#0000ff>/* free memory */ 0 n4 Q& n! @8 |( G
free(str); </FONT></P>' L& ?+ j1 T6 L1 _# M. s. W
<><FONT color=#0000ff>return 0; 9 X! R+ X+ r* [" \3 m. p
}
+ ~3 j* B8 E  C4 ?2 E( R* q) B" c9 s! a
</FONT>
* V" `5 B3 ~8 l" q8 Q  ~6 o</P>8 q. z3 B- T6 m, f/ {2 x
<><FONT color=#ff0000>函数名: memchr</FONT>
# W! d0 u6 m+ u8 _, Q7 Q8 m功 能: 在数组的前n个字节中搜索字符
4 w2 V7 N1 J! W( v* f) e7 U0 q0 |用 法: void *memchr(void *s, char ch, unsigned n); $ R# O, ^/ H+ d/ h+ P3 {7 y/ C+ b
程序例: </P>
' t9 O% R) R9 G<><FONT color=#0000ff>#include <STRING.H>
: `' ^! U$ a* A; d#include <STDIO.H></FONT></P>
; s4 b' G/ v, X. H0 F+ @; _; o+ t<><FONT color=#0000ff>int main(void) # I, u" ?0 D, [: o! _! ]
{
3 d2 ^% m7 N6 D* j$ G: }9 _5 Bchar str[17]; ( ~2 R- c( \5 N' G
char *ptr; </FONT></P>' z8 G/ y+ N3 y0 J7 l  R+ d* `; ?
<><FONT color=#0000ff>strcpy(str, "This is a string"); % m& U: [- F' y$ |* V
ptr = memchr(str, 'r', strlen(str));
& N+ r- t% t! K' p* p! V7 rif (ptr)
/ O- d+ M8 c$ d, sprintf("The character 'r' is at position: %d\n", ptr - str);
8 \3 d( r$ I" k% k) j/ u+ ~else
; O2 F. i( F2 Y" A7 Aprintf("The character was not found\n"); % B4 ?1 V6 t$ v! b) ?
return 0;
7 K) q# o- @* z% E  W0 ^/ V} & X& f: F) G4 t) @8 H
</FONT></P>
7 n+ S- m) q- a0 f<><FONT color=#ff0000>函数名: memcpy </FONT>. J# x! J  U- ?8 c2 h
功 能: 从源source中拷贝n个字节到目标destin中
0 E9 c4 E4 W# L: X用 法: void *memcpy(void *destin, void *source, unsigned n);
+ f! W3 t; D- x2 q& x( x. b程序例: </P>
; U8 J1 \) r8 ?0 F3 p<><FONT color=#0000ff>#include <STDIO.H>1 |# }. l; D, E5 _
#include <STRING.H>
  v! k- _/ Z( D! R4 bint main(void)
, K0 t. L2 F1 M4 |% E! J{
- i9 ?0 X5 S- W! J& C% `char src[] = "******************************"; 5 h9 K# Z# r1 T5 s% S% B" I
char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";
% }; ~0 h0 J  h% r! ~char *ptr; 3 g/ O3 V! b1 q+ |$ i7 ^" s0 p8 Z
printf("destination before memcpy: %s\n", dest); 6 o, R4 `6 Q3 u3 c' Z. b: t
ptr = memcpy(dest, src, strlen(src));
* z+ P' Q* p' d8 ?- O. l  J1 yif (ptr)
3 J1 \. O! M6 @# @, W7 S7 iprintf("destination after memcpy: %s\n", dest);
8 U2 ^  I5 @, y! Y3 @( @0 oelse
; \7 Y" |5 D/ Q; I0 E' W" r4 Cprintf("memcpy failed\n"); 2 y( _( s' a% q9 _, l
return 0; " {! A) o+ D* d5 l6 j- ]
} . p  W8 F- g0 b0 u4 \
</FONT>
1 e$ ]% U3 b/ t$ t0 I5 \  g3 J2 F  m</P>* E- I1 S/ d2 o( ~5 u
<><FONT color=#ff0000>函数名: memicmp </FONT>5 m' i! B% ^! {" x& l" O' p
功 能: 比较两个串s1和s2的前n个字节, 忽略大小写 ( I4 @- f  E6 ~
用 法: int memicmp(void *s1, void *s2, unsigned n);
1 t3 {; f5 ?) T: J! w程序例: </P># n; Q9 P) S1 b! d" |& z' u1 I- |
<><FONT color=#0000ff>#include <STDIO.H>) F% n8 Q) F) `2 g( a2 U
#include <STRING.H></FONT></P>
6 y) N3 g$ p3 H2 s* }6 h$ {( B<><FONT color=#0000ff>int main(void) - u* r5 s4 R" |$ B0 t* l. J
{ * ]' ]( R- n, S7 j+ E) ]
char *buf1 = "ABCDE123";
+ w9 q. b: ~1 g" `& @6 r) U5 Tchar *buf2 = "abcde456"; ! r7 d; S: y5 g" _4 @
int stat; ( O  P; ]4 x' E$ \' Z" f- A
stat = memicmp(buf1, buf2, 5);
8 ]* @- `7 O3 H* i& v' uprintf("The strings to position 5 are "); ; O+ _9 f/ }  q1 Y3 f$ g+ |
if (stat) ( j/ |/ g& v( X( l3 Z5 [  W
printf("not ");
5 L+ A4 e+ j: {% g4 z( Yprintf("the same\n");
6 T& N1 w( G2 s3 h3 J5 {return 0; 9 r# l* i) K% \  X2 s, g
}   k9 A; F4 C. F" ^
</FONT>9 u' x+ R1 \  W' N1 N7 n
</P>
% l) q! I4 f# r: P' R/ q<><FONT color=#ff0000>函数名: memmove </FONT>
  ]* \- |! H! S& L功 能: 移动一块字节 $ ^$ f4 x  F2 p; T' r
用 法: void *memmove(void *destin, void *source, unsigned n);
- l1 P# m) R5 R) w2 f' H# G% F程序例: </P>
! a1 W+ F) s8 N6 ~/ o<P><FONT color=#0000ff>#include <STRING.H>5 l8 s! c+ {; o
#include <STDIO.H></FONT></P>$ h  k: `  d/ a3 x' n
<P><FONT color=#0000ff>int main(void)
( M& Q" v+ u1 T+ I6 l" U{
6 e% ?9 Q1 _2 Zchar *dest = "abcdefghijklmnopqrstuvwxyz0123456789";
  z5 `- v1 r' G3 N4 c8 zchar *src = "******************************";
$ C0 |9 ]7 `; f+ K9 nprintf("destination prior to memmove: %s\n", dest);
$ Z- F( X  ^. b/ L; L9 D" kmemmove(dest, src, 26);
1 b5 Y6 A" j( W9 j4 l! Aprintf("destination after memmove: %s\n", dest); $ |4 A# _2 v0 J6 X6 a* n% U
return 0; 6 J8 E/ o  t8 @. Z$ B6 r
}
- m6 [/ {2 @& |, B; |' y2 _3 i. z( m$ ~6 j
</FONT>) I/ Z# P# b6 h+ a" z0 T
</P>, r! S; D7 n3 g, o# S6 Q9 Q& I
<P><FONT color=#ff0000>函数名: memset </FONT>* L9 q& R* f2 ~: E: I- l
功 能: 设置s中的所有字节为ch, s数组的大小由n给定 / @* e6 b" Z+ B/ _" c2 R
用 法: void *memset(void *s, char ch, unsigned n); & a$ i5 V* b; h/ F0 @9 v7 x7 B7 t
程序例: </P>
& p; q6 }) I! u; V<P><FONT color=#0000ff>#include <STRING.H>
" I8 X; u& W# P! `#include <STDIO.H>% F: p; B, Y' p. b: F
#include <MEM.H></FONT></P>
$ E4 c) J# E! D9 W0 q8 m9 a' J<P><FONT color=#0000ff>int main(void) 7 x2 r, X2 v& @# ^4 T
{   ~! z/ Z9 Z# |: H; R1 A
char buffer[] = "Hello world\n"; </FONT></P>
) H! y/ q' I1 }6 \6 t& }<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer); 9 A5 \% g7 S' s3 t( E# Z6 u2 i
memset(buffer, '*', strlen(buffer) - 1);
$ e+ c) M$ p2 L. I1 t0 {; G7 u$ qprintf("Buffer after memset: %s\n", buffer);
+ o- T5 u3 F7 z9 t2 w, J7 r$ mreturn 0;
; A. ?' ~; j6 m# O3 l& S0 S, y} </FONT>
  N0 Q4 m; M$ Q$ d
; A$ k& @, O9 q0 }5 W, `. x$ ^" d</P>
" |" |9 S' u" i& x<P><FONT color=#ff0000>函数名: mkdir </FONT>
! ]7 f" n% [+ |- i, I" n功 能: 建立一个目录
$ G" f0 A! u" m8 j用 法: int mkdir(char *pathname); ; U' H7 r: y  W2 Z1 y% X. U
程序例: </P>
% H4 |, F, c% ?, \% W6 \. e<P><FONT color=#0000ff>#include <STDIO.H>* T- B7 Z9 {, H! G; X& F
#include <CONIO.H>, J1 K& y* i$ y  r4 J7 d+ T
#include <PROCESS.H>& Z' Y; I, V, y# d
#include <DIR.H></FONT></P>, t; s3 @; e1 ]/ S7 w
<P><FONT color=#0000ff>int main(void) " g7 B7 T+ ~, s, ^$ X( B) _% ~
{
- ?& s$ c% v5 f3 ^int status; </FONT></P>
1 h1 b+ Q, h) Y7 g+ [<P><FONT color=#0000ff>clrscr(); % }# y. |8 R& o  t! v1 W
status = mkdir("asdfjklm"); + V; u0 Y% j! o% M
(!status) ? (printf("Directory created\n")) : / @4 _) J* w- j2 q
(printf("Unable to create directory\n")); </FONT></P>8 R% p4 x2 i/ e4 U8 A. j8 d& m
<P><FONT color=#0000ff>getch();
2 y: ~5 o) U& Z' w- N" Bsystem("dir");
* a& o7 N! z2 A/ }2 g0 c+ y8 r7 egetch(); </FONT></P>
3 U, B- |0 A8 f4 U; C. I; d1 B% o<P><FONT color=#0000ff>status = rmdir("asdfjklm"); - x. X+ e6 j  W3 n( R
(!status) ? (printf("Directory deleted\n")) :
  ^0 @9 w, p0 f) B/ @(perror("Unable to delete directory")); </FONT></P>0 ^+ K* z# Y3 x7 G1 f* u% J$ N% O
<P><FONT color=#0000ff>return 0; ' R5 P, l4 \. ]3 M3 E8 D
} " ^# x  R( ~: S; }: H4 u

  k) d$ }; }, \/ f/ B% E& h- L</FONT>" I1 U; R6 H) p7 q, d- T" P/ l0 x
</P>; o0 [; n- R# k3 B' {/ k; q
<P><FONT color=#ff0000>函数名: mktemp </FONT>0 _. _* U% E. T1 T9 G0 A7 m
功 能: 建立唯一的文件名
/ y/ h3 c# @! Y. Z) w1 ~+ H4 i用 法: char *mktemp(char *template);
: i5 `, P! i9 m+ O. e1 N程序例: </P>
! D$ ^5 q+ Y6 `5 l<P><FONT color=#0000ff>#include <DIR.H>" B2 y3 Z8 P6 c5 L7 x
#include <STDIO.H></FONT></P>0 n/ U3 k8 y; d' E9 R
<P><FONT color=#0000ff>int main(void)
) x3 G) o$ n% d{
# i. U4 g: t0 Q2 h  y/* fname defines the template for the
* g6 c; q' ~( W+ y! C5 `; ^! q  m0 stemporary file. */ </FONT></P>! O- h9 X, M' `" G1 J& y% ^
<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>
3 C+ [# i3 z9 j# E+ t<P><FONT color=#0000ff>ptr = mktemp(fname);
9 ?- B5 U$ H& d3 J5 K4 @, p8 |3 ^6 s9 Lprintf("%s\n",ptr);
) }+ W, b2 J8 Y6 Preturn 0;
/ L$ F, V; C! t9 m& s} 0 m% g- M/ E1 t  i/ e2 v6 X3 y0 k1 _0 u
</FONT>
( ^2 Z2 W8 x3 `6 L# i</P>
+ H% M/ N! l0 B- j<P><FONT color=#ff0000>函数名: MK_FP </FONT>
  r' x& A( a' H& J0 {( D功 能: 设置一个远指针 / A/ H3 b% ^- t5 P
用 法: void far *MK_FP(unsigned seg, unsigned off);
& d. }; I' }! p: f6 H& O% A* K程序例: </P>
) e* z8 R9 _2 a, Y; ?& @* _3 V<P><FONT color=#0000ff>#include <DOS.H>+ `" \. ~. \2 x. g5 z2 U
#include <GRAPHICS.H></FONT></P>
3 m  V. b6 ?& N5 ~, X<P><FONT color=#0000ff>int main(void)
  w# l; V8 a" i! d+ u4 a/ M0 ]4 P( a{
- m/ p. @9 a3 h! l6 K4 pint gd, gm, i; , K( c- \! `  T) n
unsigned int far *screen; </FONT></P>
( G+ a9 m# c+ j/ A- ^2 c& V7 @<P><FONT color=#0000ff>detectgraph(&amp;gd, &amp;gm); 3 @4 ~7 f5 K* B$ z8 Z
if (gd == HERCMONO) 3 Q5 u* C! M) x
screen = MK_FP(0xB000, 0); 3 Z/ Z, f; p7 K- i3 p. l2 o- v
else 3 b4 \( |1 p: l+ {7 {* u
screen = MK_FP(0xB800, 0);
& m* U% g( Y. A4 J8 `for (i=0; i&lt;26; i++) + N6 O5 b, F3 Q9 D
screen = 0x0700 + ('a' + i); ; C: n* K+ E3 q! n2 B# X
return 0; + O% m% i8 b! ~4 A
}
& o7 c( @  Y$ U! ~2 K4 }- s</FONT>
% B, R% ]& ?. D- k4 m</P>
) Q/ N7 \+ b" R4 S# p<P><FONT color=#ff0000>函数名: modf </FONT>* x( x/ c0 u- J
功 能: 把数分为指数和尾数 1 Y, z" N# j/ M5 a$ o
用 法: double modf(double value, double *iptr);   D+ V  ?- x. I
程序例: </P>
( w* V" H% c9 F5 k5 n<P><FONT color=#0000ff>#include <MATH.H>7 r7 M& U/ m0 V
#include <STDIO.H></FONT></P>& n" P* E- H3 L( i. Q: b
<P><FONT color=#0000ff>int main(void) & n# J% R1 Y- ]+ {
{
+ _- n, m' c  o6 o0 Ddouble fraction, integer;
4 d3 o+ p4 N1 r2 o" B9 ~double number = 100000.567; </FONT></P>
5 ^0 K2 x: E2 P6 z, i% r<P><FONT color=#0000ff>fraction = modf(number, &amp;integer); ; V4 E& M  j1 G& \; V( Q1 F1 a( V
printf("The whole and fractional parts of %lf are %lf and %lf\n",
" l/ H# c4 P" n: Xnumber, integer, fraction); # P1 E# j6 x3 S
return 0; 0 |4 G6 S& b7 a; d5 l
} </FONT>1 ?1 m' \' X% q- i5 t5 r& `

; y5 r$ `) H" r; i+ L) i5 {4 i7 b</P>! u" T! ]8 [3 u
<P><FONT color=#ff0000>函数名: movedata </FONT>: Q0 p% T* s! U' I
功 能: 拷贝字节
/ x, X5 w/ l1 e: N用 法: void movedata(int segsrc, int offsrc, int segdest,
$ M1 j. s3 f- ?9 \! b3 Eint offdest, unsigned numbytes);
# I* C! m0 i( }: r程序例: </P>0 N- E# w4 Z- a8 X2 V% P. ~& J
<P><FONT color=#0000ff>#include <MEM.H></FONT></P>
& @3 f3 B. ~- a( E7 ]% d<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>. C1 P* n) I0 a6 @& z* q
<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */
6 }' H" G' T# Uvoid save_mono_screen(char near *buffer)   l6 F, ?8 z/ z! O0 r3 ]7 `' y
{ 9 g' {2 j% b; G$ m
movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2); 1 B" F8 O7 g; k, l. @1 s1 g
} </FONT></P>2 {% l, U% }" Y" W9 x7 }" ?! P
<P><FONT color=#0000ff>int main(void)
9 ~' L$ J3 u+ f  e9 _9 I{
% {, e+ \2 S0 l# |# Kchar buf[80*25*2]; 7 z3 ~  q. K% x/ C& n
save_mono_screen(buf);
! ]6 x3 K4 \% e# i# E& j5 p}
9 p3 L; _, X1 C+ U</FONT>- x- h0 t. p  e
</P>
' \' l% d5 U* d7 f<P><FONT color=#ff0000>函数名: moverel </FONT>' a* G" d; Z$ Y
功 能: 将当前位置(CP)移动一相对距离 * ~' e) k8 n7 ]9 `9 l
用 法: void far moverel(int dx, int dy); 2 t1 _" |- v0 P1 S- v" U! S
程序例: </P>* D# v2 h$ W+ P6 j
<P><FONT color=#0000ff>#include <GRAPHICS.H>
1 G2 k2 U) s) S; e#include <STDLIB.H>4 k: r; n7 z5 X, ~+ q; L% @# ?* x
#include <STDIO.H>
! V) m" {9 Z! x0 w( d/ \  P9 t% f#include <CONIO.H></FONT></P>
1 ^5 H  `  B* \+ S; t& G<P><FONT color=#0000ff>int main(void) + ?6 \  t- D9 \; i" W7 ]# M, J
{ ' L1 L. x% H* z+ c$ O
/* request auto detection */
* U: |( ?+ p3 P- d, G) B) Uint gdriver = DETECT, gmode, errorcode;
  J5 c( F. I$ W2 \) _char msg[80]; </FONT></P>
4 S3 ?: I* s& H8 }& Q, y, @<P><FONT color=#0000ff>/* initialize graphics and local variables */
* @' I" D/ C: g9 X$ C. einitgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>$ A+ u* _, X9 z4 o' n; v
<P><FONT color=#0000ff>/* read result of initialization */
6 o3 n! k2 q9 u$ A0 a& ~8 s3 serrorcode = graphresult();
5 A* W; E- _. zif (errorcode != grOk) /* an error occurred */
/ F3 Y5 b3 W# a& T8 M; J# b{ " D) E6 V8 S& R' N9 x
printf("Graphics error: %s\n", grapherrormsg(errorcode));
+ k$ ]& c! I7 L# k6 \- eprintf("Press any key to halt:");
% |3 r7 ~" }! i+ P8 Kgetch();
7 f+ L$ T3 j5 Pexit(1); /* terminate with an error code */
% h$ V; r9 m2 V6 Y} </FONT></P>
6 ?3 f0 p( M2 R/ }<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
5 g* g) |" n) a/ }% ymoveto(20, 30); </FONT></P>
( E* X  z1 p" G3 d2 @<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
9 i) `" I, Q4 B' g' |- \/ |/ \; Wputpixel(getx(), gety(), getmaxcolor()); </FONT></P>2 E- @& Y2 }: s. x, D
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ 7 G; Z# A, n# p" F6 s
sprintf(msg, " (%d, %d)", getx(), gety()); 8 k/ X' {9 ~$ ?2 M: z; [
outtextxy(20, 30, msg); </FONT></P>4 v2 z/ r% w1 O
<P><FONT color=#0000ff>/* move to a point a relative distance */
1 R. @6 @2 G' I/* away from the current value of C.P. */
" q( u, J+ |$ s: T# Imoverel(100, 100); </FONT></P>& x, I+ M' _3 N
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ ( o# U: Y, B! ]  N, H! `
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>" ]! e8 }5 F- c9 e  L
<P><FONT color=#0000ff>/* create and output a message at C.P. */
) {) I2 J  ^& Y' B) q% t' N3 zsprintf(msg, " (%d, %d)", getx(), gety()); ! }  I+ p" n% }, X' p5 Z
outtext(msg); </FONT></P>
, [) \4 D+ @4 t$ F" p<P><FONT color=#0000ff>/* clean up */
7 v4 S/ \5 F- M3 C1 v0 j0 R' n3 Bgetch();
* C) b1 O1 _' P+ A5 z0 m) Nclosegraph(); , \# [$ f* X" k' ^& u
return 0;
  s8 c9 c, B, j7 c# M0 }  ^* R} 8 n3 S9 ^8 D0 B- L8 `
</FONT>$ _( v/ ^1 z; K" S5 Z  y( U9 @/ @& L
</P>+ E  r7 K' M. B, f; v$ S$ j( I
<P><FONT color=#ff0000>函数名: movetext</FONT> % W/ `# ~7 \1 ]# {8 \
功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域 + ~9 @! w+ z0 T# f3 D$ f5 P  V
用 法: int movetext(int left, int top, int right, int bottom, $ V) L9 s0 b  J7 X7 _4 Z: ]
int newleft, int newtop); + t; C( s+ b3 i) s7 m
程序例:   N+ R! j6 c. S0 U
<FONT color=#0000ff>#include <CONIO.H>
8 l' e0 M( p6 }3 k8 W#include <STRING.H></FONT></P>* `, w$ ]' S5 f' e' g
<P><FONT color=#0000ff>int main(void)
: g! E6 j6 N* a2 \: O3 u; C{ 4 a7 u4 Y5 t) b; G
char *str = "This is a test string"; </FONT></P>
6 V+ {, Q3 C* a% v; d<P><FONT color=#0000ff>clrscr();
: u/ C! f' v( l9 f" ^1 Icputs(str); 9 k1 S  ?# J' a, c. R' X. q
getch(); </FONT></P>
5 ^  z. X( B; _$ I3 |0 P: E" z! t<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10); - ?- a, e3 N$ k
getch(); </FONT></P>6 F' C$ G+ Q, ]5 ~2 z
<P><FONT color=#0000ff>return 0;
1 H0 N* @4 p6 L1 j} , q9 L+ h) w: L- h  c

! k" r2 H# r0 n' Z, B</FONT></P>* T# d4 r2 D8 g  [: A
<P><FONT color=#ff0000>函数名: moveto</FONT>
, B$ ]8 W" a( y功 能: 将CP移到(x, y)
1 w2 A7 F+ M% h* j9 ]用 法: void far moveto(int x, int y); $ [( @' C/ j9 T$ i
程序例: </P>2 q+ F& E% K, Q
<P><FONT color=#0000ff>#include <GRAPHICS.H>
4 {+ U& [5 I: V8 W% `' K#include <STDLIB.H>
' A+ D/ E2 b8 v, d4 c4 [#include <STDIO.H>
/ n& A# J  y, s4 e# m+ V#include <CONIO.H></FONT></P>" V2 L+ a" @6 c0 X! H; r
<P><FONT color=#0000ff>int main(void) 1 L: {+ o  K1 c5 V
{
3 p7 P9 a' @0 @, d1 Y; k# x/* request auto detection */ ) x: k& h# i  i
int gdriver = DETECT, gmode, errorcode;
8 i: L6 d2 ]" z! O* ?, Lchar msg[80]; </FONT></P>
" |3 j* k* |5 P: d) W# T! v8 J% r<P><FONT color=#0000ff>/* initialize graphics and local variables */
# S8 [8 I% u& Linitgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>! _: ?; Y8 g" T  m; r% \9 n5 z
<P><FONT color=#0000ff>/* read result of initialization */ % }/ g% M4 |( \+ B1 c7 D
errorcode = graphresult();
5 t1 C& o4 u' Dif (errorcode != grOk) /* an error occurred */
! @$ h2 x# ^3 o- ^0 u+ S' M{   u- E. N5 s+ h. d
printf("Graphics error: %s\n", grapherrormsg(errorcode)); 4 O4 l; r* r4 U" ?8 ]3 G4 S
printf("Press any key to halt:");
9 w+ X- h# _  R4 k( |% [5 agetch();
! N* f; r  J, R7 _exit(1); /* terminate with an error code */ - a4 [9 @) v. @9 s/ C
} </FONT></P>' c7 ]9 ~+ C6 ?) o" ~8 H
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
- \4 _. y/ D8 a1 w# J# ^moveto(20, 30); </FONT></P>" b" n" h4 i$ W0 b1 p  a' a1 e! o
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
( ?8 J# J. u' Uputpixel(getx(), gety(), getmaxcolor()); </FONT></P>0 N& O# \, ]/ l
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ " C, s: d# {4 ?" ^' t6 _
sprintf(msg, " (%d, %d)", getx(), gety()); 5 s) q' M& I3 G0 _% W3 X2 z
outtextxy(20, 30, msg); </FONT></P>
/ x0 N& ~- ~' f; ^& o! [<P><FONT color=#0000ff>/* move to (100, 100) */
# ?  b- u4 T) L+ R6 {/ Emoveto(100, 100); </FONT></P>
' J* S; D( }/ G<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
+ o3 h5 r  A: y& \8 e; eputpixel(getx(), gety(), getmaxcolor()); </FONT></P>  t' K% K3 ]5 }( j
<P><FONT color=#0000ff>/* create and output a message at C.P. */ 0 Q4 V. ~9 _! n5 f& c
sprintf(msg, " (%d, %d)", getx(), gety());
2 }2 b% g2 k& Fouttext(msg); </FONT></P>
4 r  i" U5 M% ~( \/ ]<P><FONT color=#0000ff>/* clean up */ 3 j. [' _* q! g! A+ M* H
getch(); % S& ^2 }: x& q6 K% D: @
closegraph();
# p1 B2 S. _: r8 W! q, I9 O" m3 {  Treturn 0; 6 P* p- b. y: ~5 d# G1 ], L! V& j
}
  N  A8 n9 v) ~! X: g5 y( {</FONT>& c0 h$ ~, }( M* Z' g
</P>5 w( S+ h* Q) E+ h
<P><FONT color=#ff0000>函数名: movemem </FONT>
; j4 Z! d1 N% {$ {1 h( C6 a, y功 能: 移动一块字节
  n% x, j/ A, b用 法: void movemem(void *source, void *destin, unsigned len);
& x" }/ m6 P+ @7 ?% e程序例: </P>
' T1 }& c" E; e) T<P><FONT color=#0000ff>#include <MEM.H>
+ M2 A, J1 `( O& D#include <ALLOC.H>
1 M* ]) w  J/ F- B& h9 G1 {#include <STDIO.H>( @5 r0 E% N- s' [7 C
#include <STRING.H></FONT></P>
* D( Q4 d& M0 v: V<P><FONT color=#0000ff>int main(void) 9 q; P! _6 W; F: f( \
{ ! m& l* z2 v) x1 E" `* a
char *source = "Borland International";
; ?* h4 K! `8 `char *destination; # @/ C: u+ ]+ X
int length; </FONT></P>
* F; [/ J: U2 ]) i<P><FONT color=#0000ff>length = strlen(source);
; F; v+ x+ W6 o" rdestination = malloc(length + 1);
0 P  a/ K# w' G( amovmem(source,destination,length); 8 [6 P. n  H6 r" Q2 n& n
printf("%s\n",destination); </FONT></P>( s# Z5 V% \5 D! N7 g  E
<P><FONT color=#0000ff>return 0; , z  y; K" {0 o1 {# z1 k( q; h
} 0 t9 `- I8 M  c$ F% `: Z/ t
- C* f. `- }" v" q2 T
</FONT></P>) U5 U5 V& N8 l/ P
<P><FONT color=#ff0000>函数名: normvideo </FONT>
6 H+ e! c6 s7 Q) P( u/ c& B" }功 能: 选择正常亮度字符
  D+ j8 R$ ~. S& g用 法: void normvideo(void); * L  `/ G0 [4 |/ c4 a* L, K
程序例: </P>
1 L. O6 s% L' H% [7 M<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>: E% b( [& g( x8 [( q/ i
<P><FONT color=#0000ff>int main(void)
, D& N3 i( e$ Q# S% O: z  @{
# c, i2 N! `+ O) r: |normvideo(); : v0 K8 }. y# V+ I$ e7 j
cprintf("NORMAL Intensity Text\r\n"); 7 B/ {7 [$ E1 G9 g. M
return 0; 7 `& S0 L) p* u& l1 J
} * V  \5 }1 ^0 A9 v( q
8 ]' z1 B7 }: a, [$ F
</FONT></P>
* f; k8 C, Y2 _' Q. Y/ l<P><FONT color=#ff0000>函数名: nosound</FONT> * I! I( e; r9 J' M7 N4 G  ]) ~& R' T5 C
功 能: 关闭PC扬声器 8 j& a- Y( [! i) ?. y
用 法: void nosound(void); 4 Q( x% Q  ~+ E9 b2 P: y) ?" M
程序例: </P>( E. R+ ?7 X: b! e, p7 p
<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>7 T( q7 f1 ?1 u- v
<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity.
# z1 o% O) }9 c. Y# _. q8 [This was determined empirically in Australia, where a new factory
8 N# |5 X1 ?( q$ ]. igenerating 7-Hz tones was located too close to a chicken ranch: * c8 r% f% R& d, B. o; B7 U3 g
When the factory started up, all the chickens died. </FONT></P>" e& c  U' c. s( g- I0 p
<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone. . J2 K( S! Z8 j0 l
*/ </FONT></P>
$ L0 Y/ i* g# q  i5 w& M3 `<P><FONT color=#0000ff>int main(void)   x% t5 Y% w5 K  c: X
{ 2 W$ Z8 X' H9 }* x: j
sound(7); # g) A# e$ \& G* Q: s
delay(10000);
# E% y( d9 E6 i) O0 T% P% J/ v* rnosound();
9 Q! w7 ?6 K: {, K  n) Q$ j}
( d6 y  M4 C  U5 H</FONT></P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-21 22:02 , Processed in 0.432668 second(s), 51 queries .

回顶部