QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2918|回复: 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>; l; }# w( P7 q) Y
< align=left><FONT color=#ff0000>main()主函数
. F, t) n' n! z! {9 B7 ]' }( |</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某
* R/ f& N: Q' o5 n; Q3 Q8 K4 }个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 ' t" E' |7 I8 w6 I6 r( i+ L
在哪个地方, 以下几点说明都是适合的。
7 ]0 L. t( @2 k, T<FONT color=#000099>1. main() 参数 </FONT>
( |7 c# y6 f1 B3 M+ W1 I& R8 ]# u1 r在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。 , F$ ?( X7 e+ s
* argc: 整数, 为传给main()的命令行参数个数。 % V2 @5 U& O' P# O
* argv: 字符串数组。 & Q( |9 d$ K) m  e( h4 ?
在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0 ; O2 `1 f2 q8 Y+ s$ [6 @
以下的版本, argv[0]为空串("") 。 5 J9 K4 r5 I% b/ i9 T/ p
argv[1] 为在DOS命令行中执行程序名后的第一个字符串;
" H& m' c& n. t$ s+ @, W3 zargv[2] 为执行程序名后的第二个字符串; # O/ }0 t# G2 B6 N. y+ {
... ! V0 x& S# O* }9 R) i) h7 z
argv[argc]为NULL。
8 M! P6 e  Y3 j$ F; k& P" E5 @*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符
$ g" V& p/ ~# x* K串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C: * f8 l1 d# e: G% |5 c6 F. i
\TURBOC(对于PATH) 或YES(对于87)。
, l( e6 F# K) h) S( V  P, ]* vTurbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中 7 C& L5 K/ J; [. x
说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序 2 j5 n7 |- \* e% ^9 j( b8 O
的局部变量。
. |- o/ W0 N7 g! }* m请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
% I: T* H+ @' x$ r的例子:
2 P3 {9 W/ }2 ~% K8 b! }<FONT color=#0000ff>main()
$ W( `1 B6 q5 t' k! h0 F; q" |main(int argc) * ]9 Z* O+ m& a
main(int argc, char *argv[])
- ^2 M* [- m5 R5 }6 L- t9 }main(int argc, char *argv[], char *env[]) </FONT>
; I, D( P- n. J& W' ~: K- p其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不 ; U, n3 f( w/ D5 a* M/ {5 C: c9 T
用argv[]的情况。
  V7 r+ J! ~1 B) v0 p; w7 R以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
, H2 l, L+ `  q4 ^: }+ y<FONT color=#0000ff>/*program name EXAMPLE.EXE*/
- [+ ]% f: Z8 G#include <STDIO.H>
* x4 B% x( P& {; Y& r#include <STDLIB.H>
! d) m; w& b1 z9 b+ ]main(int argc, char *argv[], char *env[]) # _5 M4 C9 ]1 S5 S
{
8 ^# b' O9 m; K4 J3 yint i;
, F# `* C7 _) u" i7 s% t! kprintf("These are the %d command- line arguments passed to
: B$ `3 S; T5 m) O" ~7 ^, P- wmain:\n\n", argc);
* _( u6 t" x* R) [for(i=0; i&lt;=argc; i++) ) v+ {, `# d- g( L
printf("argv[%d]:%s\n", i, argv); 7 p5 s5 K( Z) [' f% L% P' H0 W; V
printf("\nThe environment string(s)on this system are:\n\n"); ) a! u* {+ m+ N; \; s1 T
for(i=0; env!=NULL; i++)
& a; u% `. M1 ^& @1 }; M* {8 d4 Qprintf(" env[%d]:%s\n", i, env); & M1 x6 @6 P* Z  x6 N
} </FONT>
' e. d7 z2 |, R3 P* }: E如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: 2 C6 B. Y# e% \( W1 H6 Z
C:\example first_argument "argument with blanks" 3 4 "last but   _; f2 g! W5 R/ s0 t) W
one" stop! ' l! K4 V1 x6 W3 Q
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument
+ [3 r# @! @6 J. G& ^( j  {with blanks"和"Last but one")。 & L. t# e3 K; @) o5 X' ?8 ^
结果是这样的:
7 _9 l. f/ J& N. ?; M. ?9 s5 s6 X7 a<FONT color=#0000ff>The value of argc is 7 9 G& V; ]: x, X9 Y, Z7 C
These are the 7 command-linearguments passed to main:
% g7 ?" x1 v% j8 }  bargv[0]:C:\TURBO\EXAMPLE.EXE 4 R( x. f$ M! T( K% \* \# f
argv[1]:first_argument
' J6 u2 r3 v5 margv[2]:argument with blanks   t' U$ d( y- e( _5 j) h
argv[3]:3 # N. L3 R$ }  U
argv[4]:4
7 T! h5 Y' [. J' d" Y) h( Targv[5]:last but one . y0 \2 a6 d+ @
argv[6]:stop!
* S# ]0 [. k& \3 P6 l* Aargv[7]NULL)
4 j0 l- l$ g: d/ U7 p9 H; v+ x# {The environment string(s) on this system are: 4 G4 J0 }# X, N" F5 w
env[0]: COMSPEC=C:\COMMAND.COM   v7 e7 F' g. [1 y
env[1]: PROMPT=$P$G /*视具体设置而定*/
9 d" ]" F7 Z- g5 o  F; J- }env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ 2 h$ {9 e; Z+ w9 g
</FONT># u; p* F" J) \% V# g1 m; o, h
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包 4 g$ @, a. J% F
括参数间的空格), 这是由DOS 限制的。 " W; q% T3 S% [1 M' \+ ]* M
</P>5 E* }* ?" M% U) T8 \: U/ K
<><FONT color=#ff0000>函数名: matherr </FONT>& x! L) q6 w8 u* J. @
功 能: 用户可修改的数学错误处理程序
8 \9 P! {* w5 R3 X. L; u用 法: int matherr(struct exception *e);
  M1 k* N" h$ r$ [: `; w程序例: </P>
! k- F& g: j: t9 o<><FONT color=#0000ff>/* This is a user-defined matherr function that prevents ( k; x' p$ t7 ~( H+ J1 ?2 R: u! U6 g
any error messages from being printed. */ </FONT></P>7 f* M- \9 X$ V9 d- }0 M& L
<><FONT color=#0000ff>#include<MATH.H> </FONT></P>
9 ]8 g3 `4 I& k<><FONT color=#0000ff>int matherr(struct exception *a) 1 ?5 X  C0 y6 y( k7 r# y( [  c
{ . Q6 K( [* R% M2 o
return 1;
  e5 ]1 x1 ^  s7 V% p! B  x} ' g% g2 I& i, B* l  X+ g
</FONT>
: x+ Q0 S- m! Z) F, p+ s
2 \3 K; |7 r, K</P>
, J% \2 ?* s* }) a<><FONT color=#ff0000>函数名: memccpy </FONT>! u$ I+ M/ {. @/ R
功 能: 从源source中拷贝n个字节到目标destin中 7 v1 v! \4 h5 \
用 法: void *memccpy(void *destin, void *source, unsigned char ch, . R, K9 {9 P  x# y5 u" }
unsigned n); ) k/ o& D  C$ e' X$ u5 _
程序例: </P>9 |4 h, ^7 T2 V# w6 P( L1 D3 U9 M
<><FONT color=#0000ff>#include <STRING.H>& @5 a: h% e! |: ?1 l( d
#include <STDIO.H></FONT></P>6 R4 y) U9 \) H/ ^5 o& _- I
<><FONT color=#0000ff>int main(void) % }# J1 H. C1 o. e; h
{
& W1 u/ ?8 }; ?  I% i; uchar *src = "This is the source string"; - q( n) F) p& l% I* {! N
char dest[50];
. Q! T& z# S% Q( g! ^char *ptr; </FONT></P># T& l4 q) P8 j( w
<><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>2 K2 x3 X; \( y. k1 u
<><FONT color=#0000ff>if (ptr) * V" t8 D/ d& ?3 Z" x! C& M
{
; Y* V1 p$ p, S9 c*ptr = '\0';
5 b3 M; p8 z6 yprintf("The character was found: %s\n", dest);
3 t3 q& ^0 q- G* U( }}
9 `! [0 u: k% E* y, c/ w5 G" Z( r( r5 Jelse
3 y7 J4 S& ?2 e: o/ `0 ?) mprintf("The character wasn't found\n"); ' Z& u) |- I: D
return 0; 5 R: d/ K8 h* x8 o9 u$ l0 ]/ @: {& A9 p
}
; Q' }$ E( f4 @! U$ A' C2 b</FONT>
6 B, C% I  j! M</P>
- l  K8 A8 ~5 a; _0 X9 g0 ]<><FONT color=#ff0000>函数名: malloc</FONT> ) ^2 G+ Z9 i0 W' J; J9 M
功 能: 内存分配函数
+ x* r/ g! P4 e0 W/ V用 法: void *malloc(unsigned size);
. H/ M8 L  e! k$ F9 o5 L; e8 w程序例: </P>
& J- k& M; H1 y( y<><FONT color=#0000ff>#include <STDIO.H>. V/ I& K: Q+ I5 v+ `  I7 i# M; C9 T* N7 a
#include <STRING.H>: O" F  X" O2 ?
#include <ALLOC.H>
% i5 ~! C! C  u* P7 S- q6 A" t#include <ROCESS.H></FONT></P>' H) c4 M3 V$ S6 N
<><FONT color=#0000ff>int main(void) 4 w* _: w. d" O  d1 [' }4 t# T' @
{ 9 }% y- \( y- A# o3 A
char *str; </FONT></P>
. y  v3 z5 w7 E& q$ p<><FONT color=#0000ff>/* allocate memory for string */ 8 W7 b) l) u' K
/* This will generate an error when compiling */
; B  G: }: v- k/* with C++, use the new operator instead. */
# [1 Z! z3 Y4 G% \5 {  n$ ~if ((str = malloc(10)) == NULL) : i' n7 T8 b' T; B5 V
{
1 L! a- H9 k8 R* `, g# v( Aprintf("Not enough memory to allocate buffer\n"); . \  f9 b3 v7 Q; r
exit(1); /* terminate program if out of memory */
, W; h3 r7 Q! j' d} </FONT></P>
/ `% S2 x- V7 g( j/ C<><FONT color=#0000ff>/* copy "Hello" into string */
' W! I% w( P  w) @strcpy(str, "Hello"); </FONT></P>$ M$ Z1 t. c. C2 h' u( |
<><FONT color=#0000ff>/* display string */
9 L$ Y. G. n' G5 p; s0 \printf("String is %s\n", str); </FONT></P>; ?( s0 X: W: S: ]5 M8 u
<><FONT color=#0000ff>/* free memory */ 2 [0 Q1 B! |$ o1 V$ Z, Q* x
free(str); </FONT></P>  D/ B( ?0 u) t7 k5 n
<><FONT color=#0000ff>return 0;
( }: v5 \6 u+ u} , l* V: n4 L. @, [) v2 l

+ h: c6 a  V7 p</FONT>
" k" v: @6 w* P. C* t, j; q5 T, L</P>
1 r! D3 i: M$ y' y$ m: e<><FONT color=#ff0000>函数名: memchr</FONT>
/ Z+ u9 @* F7 L$ c, }% E2 M; o- z功 能: 在数组的前n个字节中搜索字符 # F# R0 B; [3 z3 e" P
用 法: void *memchr(void *s, char ch, unsigned n);
- V# {. g8 r. Y" G程序例: </P>
0 G( u8 o2 H. V; |+ ?3 c<><FONT color=#0000ff>#include <STRING.H>
9 |' Q' E+ \5 G% E2 Z$ `9 U#include <STDIO.H></FONT></P>
/ l  l/ t: P' [2 Z<><FONT color=#0000ff>int main(void) 7 s2 b, A% [- y& i* t
{ 5 y; e: u& s; ]7 J) L
char str[17];
: P4 w, }# b( T9 F2 N7 }char *ptr; </FONT></P>  \4 p+ o+ k0 k, q+ W8 `( h
<><FONT color=#0000ff>strcpy(str, "This is a string");
7 t6 p2 Q6 C& N3 d# W* nptr = memchr(str, 'r', strlen(str));
1 a! Q) z4 ?' l( @4 ?; ]$ rif (ptr)
, z# b5 \7 _: D3 h8 Dprintf("The character 'r' is at position: %d\n", ptr - str); # ]8 K  K! |: g0 |  \5 X9 |  l) C
else 8 r/ k! x2 a8 b+ }* ~' W$ _
printf("The character was not found\n");
: J& `# n. S* [+ }return 0; 8 _- v& [' |" c( I3 ^
} - s% G% M* P( d) {6 z* R
</FONT></P>: D7 z% V' H7 d8 H7 n
<><FONT color=#ff0000>函数名: memcpy </FONT>
1 O$ Z7 l9 z$ T- e1 ]0 \功 能: 从源source中拷贝n个字节到目标destin中 + X% X: l8 a% t: S0 F$ [1 c$ C* O) ~3 b
用 法: void *memcpy(void *destin, void *source, unsigned n); , k  g% p, t1 |5 A& }& i: ?( B
程序例: </P>% F) ?: T0 M3 N) u) c9 S; T7 I
<><FONT color=#0000ff>#include <STDIO.H>
2 N) e& E0 f) }3 r1 z, A0 s. S#include <STRING.H>
$ V& D5 p5 x( h7 }" j' R% S0 uint main(void) 4 r# t! v& g  V, ?, F3 o( c9 N
{
8 k: {9 Q5 p+ n+ k. `- j0 Echar src[] = "******************************";
9 Q9 i' l4 X; Y1 o2 r6 ?char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";
- x, @6 w+ K& i0 U9 ]; ]# ~8 ~8 C) Lchar *ptr;
3 t+ U& K: j; }9 j* ~* [printf("destination before memcpy: %s\n", dest);
  l( H0 n# S( c2 r7 rptr = memcpy(dest, src, strlen(src)); 6 N$ c4 h- Q1 _2 f5 G" T& }
if (ptr) + O, d" {6 q& u5 R
printf("destination after memcpy: %s\n", dest); ) ^* }& |. O  K7 f0 y) t
else
1 X5 k+ p( n' p0 Z: zprintf("memcpy failed\n");
+ J* J  P; a/ o$ Rreturn 0; $ w4 q5 L! d; y9 b0 H) j* N1 H( i3 M
} 5 k$ u3 i  {5 f6 X, P7 K$ o
</FONT>0 {, G# b, y7 C" e
</P>3 v( o+ {, a9 i5 G, a. a, I
<><FONT color=#ff0000>函数名: memicmp </FONT>. M5 a" O9 E3 s8 b/ |9 j
功 能: 比较两个串s1和s2的前n个字节, 忽略大小写
& o1 c) N/ g8 W用 法: int memicmp(void *s1, void *s2, unsigned n);
. Z5 A' G: \6 l; E: i程序例: </P>/ ~8 r5 E) \5 ^1 w
<><FONT color=#0000ff>#include <STDIO.H>
) W( Z6 z3 R. C" c#include <STRING.H></FONT></P>+ |+ ^5 v3 c) K  o
<><FONT color=#0000ff>int main(void) 4 l* \9 M. T* H
{
% u5 x% k9 F$ n: v. a) Ochar *buf1 = "ABCDE123";
9 R  U& v, v, [! `) j7 z( @  Ychar *buf2 = "abcde456"; + C' e% i/ V* X( [; ?
int stat; , i2 }$ E0 q: T1 @/ {4 T, k- L+ {1 V' m% N
stat = memicmp(buf1, buf2, 5);
9 H! m, L6 ~2 `1 Oprintf("The strings to position 5 are "); . k# K5 C5 y' Z& q" n
if (stat) % n1 q: m1 m8 ^" q0 v* {6 d
printf("not ");
  B7 r7 x$ a$ }  l: [3 xprintf("the same\n"); ) p& S, F+ V+ T: ^2 T* e( r: w
return 0; $ R5 P. v3 f* f7 y2 g5 n
}
$ c- M1 h$ y3 M! K- u+ M7 ?' B9 b</FONT>: e2 c4 I8 B! N2 {0 a
</P>2 I, R$ a* \5 N3 d4 `  X( ^* F
<><FONT color=#ff0000>函数名: memmove </FONT>" o8 O$ P0 u0 `$ n. k, r. V7 O) g
功 能: 移动一块字节 3 d/ r) ^4 _3 V9 ?
用 法: void *memmove(void *destin, void *source, unsigned n); $ N! ]. e& P; p
程序例: </P>
- M1 ~" n6 S2 F+ V0 \& X<P><FONT color=#0000ff>#include <STRING.H>: f* A' E9 t5 x
#include <STDIO.H></FONT></P>, i! h6 r: C* `/ ^
<P><FONT color=#0000ff>int main(void) . r- }6 u# d% i. o
{ " z( A' e. [) a' s
char *dest = "abcdefghijklmnopqrstuvwxyz0123456789"; . s+ ^6 ^: R' `8 b: L
char *src = "******************************"; 0 }- _* x* o& ~" |
printf("destination prior to memmove: %s\n", dest); 7 {8 D7 r- X9 Z- M4 i  R
memmove(dest, src, 26); " u( s* t$ V7 p+ e0 E
printf("destination after memmove: %s\n", dest);
( x. C  M5 l: h% i% J2 P9 n# greturn 0; ) M' l3 N: T0 a4 V
}
- d4 T% N" d' q. o
. |" D' O, ?2 q7 x# @</FONT>
6 b* j/ @! r5 ~7 c4 [</P>' ?0 H& @# l6 c4 E
<P><FONT color=#ff0000>函数名: memset </FONT>  @5 T  ~9 y+ T3 ^# Y" }
功 能: 设置s中的所有字节为ch, s数组的大小由n给定 ( z7 l7 ~4 w' X; Y4 |6 {
用 法: void *memset(void *s, char ch, unsigned n);
( x- s) A  v* l# v' ]+ V程序例: </P>
) _$ ~" c( f! _; }7 Q<P><FONT color=#0000ff>#include <STRING.H>
- [* K' x: K& g- R#include <STDIO.H>
. B  x4 q8 r4 B) |( y( A* Z! z9 P#include <MEM.H></FONT></P>
3 l2 q3 t2 M: F  C3 J# F<P><FONT color=#0000ff>int main(void) : R5 Z6 [4 E7 N  W6 i
{
2 p* m' i1 U% j$ ichar buffer[] = "Hello world\n"; </FONT></P>
1 X( E  D2 _3 p6 }<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer); 8 ^% ~5 j, T" |' g
memset(buffer, '*', strlen(buffer) - 1); 8 @+ c' G& @* k" t  D5 {8 Z
printf("Buffer after memset: %s\n", buffer); 1 h( c, t" S/ G% Y
return 0;
/ b# H" n8 D% p5 ]! n& O} </FONT>$ ]8 \# ^/ C, N

9 F  r; l' w0 g- Y7 I</P>9 N3 F6 N8 b' |1 s9 o0 b6 ?  Z
<P><FONT color=#ff0000>函数名: mkdir </FONT>
- \; L. A% w8 u6 v$ I6 a( v功 能: 建立一个目录
7 H1 v# H& ]' d* D6 E& ]/ S: \! {用 法: int mkdir(char *pathname);
: N& j* T: s6 h: e5 ~0 o8 J程序例: </P>1 g" v* D/ ?3 q0 Q& U3 Q
<P><FONT color=#0000ff>#include <STDIO.H># Q! s3 N* W8 g, G4 _* a% a. j: T
#include <CONIO.H>
. [, {: U' x: n- U8 O, ^, O, M#include <PROCESS.H>
1 C3 a% i. c# i8 Z. }; f#include <DIR.H></FONT></P>0 G) T6 w8 {0 s( Y8 l% D/ p
<P><FONT color=#0000ff>int main(void)
1 [* O& m8 S5 `0 \{ $ \$ ?- Y1 v, }0 s+ d0 y. _/ `
int status; </FONT></P>1 {6 d% x' G" i. s9 C# j
<P><FONT color=#0000ff>clrscr(); 3 v& ?4 o+ l. m, p( B8 A
status = mkdir("asdfjklm"); $ a* [, s. P, D! K- ^2 u3 t9 U
(!status) ? (printf("Directory created\n")) : + j7 X1 q$ T* ^$ g& p
(printf("Unable to create directory\n")); </FONT></P>
; D  e% D5 F0 m6 n" v<P><FONT color=#0000ff>getch();
  b5 d. N5 d2 `1 psystem("dir");
1 m# |' S' o' v( m) igetch(); </FONT></P>
( V1 D. V2 A6 K! @1 c1 B<P><FONT color=#0000ff>status = rmdir("asdfjklm");
( Q. y" v4 R( b+ y- {(!status) ? (printf("Directory deleted\n")) :
  ^; U% u4 u( a8 y' Q! U0 m(perror("Unable to delete directory")); </FONT></P>  F! i6 ?: K+ M) N2 S
<P><FONT color=#0000ff>return 0; 4 G  u# k( @& u, L& J* T
} ! H7 t- I: r- ~6 c
; w6 O* ^7 g! A1 p! ^
</FONT>2 h5 X) x# E1 s3 K
</P>
9 ]2 _4 X1 \6 ?% n3 X: k1 g7 |4 C<P><FONT color=#ff0000>函数名: mktemp </FONT>
) q% i6 j. B$ v& R" u8 o0 B# ?/ U功 能: 建立唯一的文件名
. H" e) p% G( e) H) a' U# w用 法: char *mktemp(char *template);
% Q% f: }+ q) E程序例: </P>
0 i" q1 b6 A: N+ E<P><FONT color=#0000ff>#include <DIR.H>: `  N1 R+ L, s3 L" S
#include <STDIO.H></FONT></P>
- Y+ U' B" \0 e; j( i% _9 D$ T<P><FONT color=#0000ff>int main(void)
) F4 a9 Z) w0 W; i{
  g% _- K+ L( R! r) n' `( j, |/* fname defines the template for the
8 c9 g- O3 c2 t9 X0 itemporary file. */ </FONT></P>
3 X0 n6 I5 x$ o7 D+ K8 b<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>! h1 B: T; l0 B3 r1 n1 _
<P><FONT color=#0000ff>ptr = mktemp(fname); 2 D# ]9 Y* j, A! L; Y+ {; y+ m
printf("%s\n",ptr); ' W2 w; z1 v, S2 u, z! `7 b
return 0; " F* i" ?% h! p2 t- T8 K
}
1 N% F# v& Y4 r- ^& ~# W! t</FONT>
# @3 s2 |" c( A% p6 w0 H* H</P>8 O6 g0 e4 T% ]( i# t9 }
<P><FONT color=#ff0000>函数名: MK_FP </FONT>
- Q5 P# N- p; {) P$ ?- V/ |功 能: 设置一个远指针 $ V. `# I9 z+ q$ h  M
用 法: void far *MK_FP(unsigned seg, unsigned off); & }% c$ x) a3 H4 N& ^
程序例: </P>: r- N+ K2 t! r  n: V- b
<P><FONT color=#0000ff>#include <DOS.H>* W' N8 I7 I* b* q. B' U# B& b4 u
#include <GRAPHICS.H></FONT></P>. F# k$ g- Q% ~& l" g
<P><FONT color=#0000ff>int main(void) $ x5 q* h1 r% \; l5 E
{ / I9 \, w1 o1 ]6 o+ q+ C" {) z
int gd, gm, i;
( M7 Y* b# S( G" o: Bunsigned int far *screen; </FONT></P>; |4 w4 C  B: V! X- n% l2 S) p7 Y
<P><FONT color=#0000ff>detectgraph(&amp;gd, &amp;gm); ! ?- r+ V9 g" j) [, O
if (gd == HERCMONO)
4 T6 G+ [2 ?7 ^  K) mscreen = MK_FP(0xB000, 0);
) k7 q  X9 M) [/ E* G  ~3 |( I" pelse $ m0 I- M) x4 V- v
screen = MK_FP(0xB800, 0); 9 J, Q! U: F" m- F3 u9 z6 b1 R3 y
for (i=0; i&lt;26; i++) 0 V2 d8 K4 C2 R& r8 {
screen = 0x0700 + ('a' + i); ) O1 r6 y! m$ @0 j  p* j, L0 [  i
return 0; + p. H+ P4 a8 q7 Q
}
2 ~! ^6 |/ H) i$ t- R</FONT>5 A8 O2 J( [" i7 _8 J, c. @
</P>
) n' e% q; ]% w) @7 n! H# U& @<P><FONT color=#ff0000>函数名: modf </FONT>
* z+ [' I9 I8 j功 能: 把数分为指数和尾数   A- `, q1 M% v, H% K
用 法: double modf(double value, double *iptr); 0 P4 d5 I% H0 o, A: N3 @
程序例: </P>+ Q/ T$ `8 i5 @& p! r
<P><FONT color=#0000ff>#include <MATH.H>3 D4 N8 B" m; [5 ~! B# m# ~2 f& T0 R
#include <STDIO.H></FONT></P>
/ d; J! L1 n2 o0 V( B. a9 ]<P><FONT color=#0000ff>int main(void) - T- E) N1 P3 S/ q5 [6 j0 P4 `
{ - K( R* V( [9 G+ x% M
double fraction, integer;   V( r' `5 x( `* K* X8 z
double number = 100000.567; </FONT></P>
* r% z/ X5 r4 u7 S+ U<P><FONT color=#0000ff>fraction = modf(number, &amp;integer); 4 s3 A" a) c& q- @0 _1 r0 ~+ C
printf("The whole and fractional parts of %lf are %lf and %lf\n", 8 Z: i) U4 _( ~+ @
number, integer, fraction); ; o. A) h6 B7 F$ {
return 0;
! n- h3 z; o7 U5 d5 K} </FONT>
& j! V. M- F2 {8 B/ @: ^" q. S
/ e6 Z, G0 G! r1 U& s</P>
- ]4 `$ |8 V! ^2 r# @9 W) `6 m<P><FONT color=#ff0000>函数名: movedata </FONT>% x* p. E: O. B$ t2 n+ M, {2 }
功 能: 拷贝字节
7 z' J) d0 o5 x1 C; l6 q用 法: void movedata(int segsrc, int offsrc, int segdest,
0 k. I+ B# W# t1 k. j% Rint offdest, unsigned numbytes); ! J$ H4 I8 x" P) k9 D/ F" O/ Q1 H, q
程序例: </P>
  U, z( j3 m* D* S1 n7 _<P><FONT color=#0000ff>#include <MEM.H></FONT></P>1 H) d( u9 e- P: V2 f# u: V" P
<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>' ~. Q5 I* U5 H
<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */ 1 p. n+ |& y) J9 e& [
void save_mono_screen(char near *buffer) - x) Q# H' g0 X7 D6 c: ]
{ / Q, q3 {/ Y' T, d
movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);
) p' u: U% q  F" T( z3 e} </FONT></P>
; e* l  j0 b. F9 B) _( V<P><FONT color=#0000ff>int main(void)
! {+ T8 C* u  n% _1 d{ 5 B/ c1 E! [: g' }
char buf[80*25*2]; % ^' x% h! F# H$ Z4 r. e
save_mono_screen(buf);
. \2 I2 `+ i& O) O- M  V0 ?1 Y}
, K: \0 j+ d$ \0 e. u+ G/ P</FONT>
* i2 b; B0 A, m( ?</P>& N. Z" ]" {2 c! \  U
<P><FONT color=#ff0000>函数名: moverel </FONT>% b6 N% o& X5 c* ^) @. K* F) g
功 能: 将当前位置(CP)移动一相对距离
$ ^% ~1 L3 O$ B% A7 P用 法: void far moverel(int dx, int dy); % m* Q" x! }. h% U5 @6 _2 n
程序例: </P>
% R) f* w0 C) O4 ~4 R<P><FONT color=#0000ff>#include <GRAPHICS.H>+ A+ H; z) ?0 K0 F
#include <STDLIB.H>& O& k2 ?% ]$ l. r2 Y/ ?
#include <STDIO.H>
; G& Z3 v( B  g7 l! I#include <CONIO.H></FONT></P>
0 U9 r  n- m7 O. u<P><FONT color=#0000ff>int main(void) ( `( g, N7 B7 S% c1 v* }0 _/ Y
{   z. q* o6 H% U% u$ ~& u- C
/* request auto detection */ ( V! B/ D" s! T" e2 {; f  p+ o4 U
int gdriver = DETECT, gmode, errorcode;
; \( p7 ^9 U" E5 echar msg[80]; </FONT></P>( c- m+ r, q  b  I- D: u" b
<P><FONT color=#0000ff>/* initialize graphics and local variables */ 2 u% R$ i. Z  a: n2 D
initgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>
  C: Z+ H$ i, S<P><FONT color=#0000ff>/* read result of initialization */
. h! @/ w9 j8 G3 p. d  T2 S+ g: Nerrorcode = graphresult();
' ~: j% c( R/ p5 H% Mif (errorcode != grOk) /* an error occurred */
, y1 C1 t8 W8 z& h" C- x{ 4 d5 a; u& q0 T7 L
printf("Graphics error: %s\n", grapherrormsg(errorcode)); " i0 ?- g( M- L8 x
printf("Press any key to halt:");
4 b) v; D: z+ \$ s+ T' ~0 Pgetch(); + {$ f- ]1 r- r, I' K) h; F
exit(1); /* terminate with an error code */ + @( j( F% @& O0 o
} </FONT></P>
: K) x3 H* t2 O. M4 P) S<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ & E8 c+ `" D6 _
moveto(20, 30); </FONT></P>' P2 \) g" j4 D# x0 g" V. {
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ 0 H3 c. a. ^- \( ?! L7 S
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
; @5 P* P- ]9 [4 j$ X<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ $ y, I% J3 R! t( h. _6 n
sprintf(msg, " (%d, %d)", getx(), gety());
$ ^+ |% l  b' Douttextxy(20, 30, msg); </FONT></P>* T; y5 U  G/ X0 W, K, @6 e
<P><FONT color=#0000ff>/* move to a point a relative distance */ $ G0 p! @1 }, o% h. _4 P6 G/ [
/* away from the current value of C.P. */
; P# F' n- V* T- s! X+ Y' ?3 ?moverel(100, 100); </FONT></P>' H0 d5 X0 N+ X1 h" E* ]9 N
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
9 x2 a# F% w3 U9 dputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
' x- ^! l" \' V4 B" t4 ?<P><FONT color=#0000ff>/* create and output a message at C.P. */ 1 Y; D; T7 J/ `% P$ a  @
sprintf(msg, " (%d, %d)", getx(), gety());
: \- V/ o* Z- routtext(msg); </FONT></P>
) r/ @$ d2 F3 E* N% _/ Z<P><FONT color=#0000ff>/* clean up */
& @7 j* F1 A5 q8 S0 B9 }getch(); # Y+ s7 k/ _4 N1 e5 C" {
closegraph();
& }& C. B- i9 i+ Q. a2 yreturn 0; ; i- `- V$ W" V" e+ v8 O8 V
}
$ V- K! {0 K! \9 U3 O8 i0 K</FONT>
0 a9 N1 {$ s, \$ @. b. `( ?</P>+ y/ B9 K$ w  u
<P><FONT color=#ff0000>函数名: movetext</FONT>
: a% V: X0 `0 E- ~3 w+ p功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域
7 z. p' w4 e" R* U; y( u( Y用 法: int movetext(int left, int top, int right, int bottom,
' N  ]! j3 k- E- t# Hint newleft, int newtop);
) }) y5 h& D0 d& A2 T" D( k# L程序例: # H4 u  ~- e' H$ g; z7 Z7 r
<FONT color=#0000ff>#include <CONIO.H>
; z" m: C  P! u& F8 `5 D0 Y#include <STRING.H></FONT></P>
! S# {% n$ o* p<P><FONT color=#0000ff>int main(void) ! l5 ]4 I2 @: R/ H. E9 A/ Y
{
" v# u( n9 g6 w# k" s) g2 pchar *str = "This is a test string"; </FONT></P>
+ m5 w( z! A7 K; a$ P0 Q<P><FONT color=#0000ff>clrscr(); ; E3 C: U8 j3 @/ b) z
cputs(str);
6 K1 `+ D0 ^1 U2 X) H$ a: Bgetch(); </FONT></P>& J/ W* K7 F* R9 I! h+ h! d
<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10);
6 G+ J! e& _" A$ y) dgetch(); </FONT></P>" G" `9 ?" b, O" M) ]) d! w6 p
<P><FONT color=#0000ff>return 0;
3 S  I- j; O  x/ V4 f" x9 [$ O}
% k- H& c% K2 [2 M& O3 i7 m4 _
. q  n7 g0 o) |3 i0 \</FONT></P>- f% r- _( M9 I; s& R
<P><FONT color=#ff0000>函数名: moveto</FONT>   o, ?6 h" s+ J$ i$ k% E( s8 f
功 能: 将CP移到(x, y)
9 p' w7 K, i. T% O" a, X) w用 法: void far moveto(int x, int y);
3 o" F$ n6 O/ ], ]- I程序例: </P>
: [5 H+ @# ^9 X) _4 V+ ?, @<P><FONT color=#0000ff>#include <GRAPHICS.H>) v$ Q* A+ p: ]# J4 P" \5 I4 p
#include <STDLIB.H>
) {5 G* E. e% H0 L( {. ^#include <STDIO.H>
- A( _! I4 Z& g8 ]- n$ `#include <CONIO.H></FONT></P>
% u$ b! p3 f3 q5 w+ b; [<P><FONT color=#0000ff>int main(void) " k- w( _1 G' T" S# g7 w; ]  f
{ 4 R; r# w( l" C. l
/* request auto detection */
# K" R% Q* A5 O% P# T0 {int gdriver = DETECT, gmode, errorcode; : V( _' O8 T$ V/ k
char msg[80]; </FONT></P>
# {# @3 t% V% R& l0 ]<P><FONT color=#0000ff>/* initialize graphics and local variables */ 9 I/ S) Q( y3 Z# p" u2 @
initgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>3 Z* r5 ^  D) w& \* X# Y
<P><FONT color=#0000ff>/* read result of initialization */ # K0 m  f. `6 [1 i8 A: @
errorcode = graphresult(); / }& z, s! A9 x* w  [& z
if (errorcode != grOk) /* an error occurred */
* V" c/ Y( L3 Y* q. r{ / H' l& R7 A: I. `4 u# H& f9 ?9 C
printf("Graphics error: %s\n", grapherrormsg(errorcode));
4 T( b3 B1 _- U: X% A/ B4 O1 Xprintf("Press any key to halt:");
0 B1 S8 R: A# H4 _* p$ ugetch();
4 c" `3 B5 C5 `1 aexit(1); /* terminate with an error code */ 8 k$ v; Z  E! i: J8 _, Z
} </FONT></P>8 y7 m; `' [, D5 R$ M6 X
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ ! q+ z% g8 z0 R6 Q  \
moveto(20, 30); </FONT></P>0 b3 g4 j0 W7 Q' U. J1 ^4 `5 S2 T
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ 1 u3 h. S& _- B
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
  m8 Z# Z& J% o0 C/ k0 x<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
6 D; n/ H. \5 y& o& U& \$ [sprintf(msg, " (%d, %d)", getx(), gety()); 7 g- h" y1 z7 b) B
outtextxy(20, 30, msg); </FONT></P>
) l, t6 f5 q5 E' K* \/ ?<P><FONT color=#0000ff>/* move to (100, 100) */
$ k# v$ ^# T! {# c8 d- P% cmoveto(100, 100); </FONT></P>6 B1 Z  D3 o6 n" a
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
5 ^; E6 z, {% v" `% i# D- m; |putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
  o8 K, K8 t9 }* C! @8 p7 ~" `<P><FONT color=#0000ff>/* create and output a message at C.P. */
0 C; X2 {: _/ A% c+ ^( dsprintf(msg, " (%d, %d)", getx(), gety()); , ^' U4 g. \1 \6 f* k
outtext(msg); </FONT></P>  \9 D- G( R# l; f! [! D: m1 p. f1 J- h0 |
<P><FONT color=#0000ff>/* clean up */ # B* u  L  H! X9 d1 l- F7 I" w
getch();
5 M8 @3 g# w9 Q7 r2 ?closegraph();
$ g' n' a% e0 N5 e& Areturn 0; 8 z$ j& z6 E' F* l" @7 T
} 9 m. P: c( t, Y0 b" J* ~7 t
</FONT>
; r0 }$ u9 @" H+ q- \7 U</P>
- s% o0 o6 B! y& i' F<P><FONT color=#ff0000>函数名: movemem </FONT>
4 V9 b1 ]3 H% L4 V; f2 u" l1 u$ b功 能: 移动一块字节 + C" _" A: A8 i: V; i; g
用 法: void movemem(void *source, void *destin, unsigned len); $ P5 e" _/ p# D% M
程序例: </P>
! ^* c9 U6 e. M; I$ b, E<P><FONT color=#0000ff>#include <MEM.H>
+ B! C2 g' n0 J#include <ALLOC.H>, ~/ \4 y, e7 R& w  f( z. l( j+ k: ]
#include <STDIO.H>
0 ^- D- P$ G8 D" V#include <STRING.H></FONT></P>
' E( I7 [8 f& J, j, n<P><FONT color=#0000ff>int main(void) - G9 z+ o0 S/ S6 F& ^& p
{
, X( c5 P8 ~% Lchar *source = "Borland International"; 9 W6 h% p/ u  G# \5 G! i4 K: P4 v
char *destination;
4 V' q, u8 F, @6 u# d  f4 E$ n9 v3 Y; qint length; </FONT></P>9 }5 U0 S9 o, X0 z# N
<P><FONT color=#0000ff>length = strlen(source); ' O0 u$ _0 K2 `) l  i% }+ |
destination = malloc(length + 1);
5 U' A" b# L% \' c; nmovmem(source,destination,length); / c5 ^: W2 g* g; M3 y  a
printf("%s\n",destination); </FONT></P>
  H# A+ n* s% {<P><FONT color=#0000ff>return 0;
. \4 x' Y" O, A$ g+ |' y}
9 ~+ G6 f4 T& w  F! _2 v4 }. T- r7 o) o# k2 K
</FONT></P>1 F3 p- ~4 |  [
<P><FONT color=#ff0000>函数名: normvideo </FONT>
0 _' t" B. n$ w# P7 H- t" a3 S" A1 |' Y功 能: 选择正常亮度字符
/ J$ y) @1 q/ X+ V$ d* b8 Q/ |0 y用 法: void normvideo(void);
( b! s* J  {* w2 X$ w1 Z( }8 U程序例: </P>* q2 R# H% J2 K" C( @- d6 o
<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>
) I/ p) Q8 c$ Q+ h; o4 a6 L<P><FONT color=#0000ff>int main(void) 6 a3 w3 A9 ^) C; X0 _( M! W' v, F. N
{ . @; P( R0 S. S" X
normvideo(); ( ^) L& @' z0 @" P/ k+ W# K4 w
cprintf("NORMAL Intensity Text\r\n"); $ f/ a9 a, H/ q, T# G) W, y
return 0; $ X& C: Y' u1 R5 P( _+ T6 C# y
}
- }' Y; p/ |% V6 X6 Y  ^
: g% r# t2 I1 W+ D1 t5 n9 ^) c</FONT></P>9 I9 p+ [$ n- {( t( e2 x6 S
<P><FONT color=#ff0000>函数名: nosound</FONT> + W# U7 H/ ]# ]
功 能: 关闭PC扬声器
9 \3 L0 ]7 a: N  z' @用 法: void nosound(void); ' `2 E- a! Z' Z+ i$ \# s# k
程序例: </P>
8 U$ N8 c2 p" C<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>
( c7 a9 j4 Z, I5 Z6 k* h<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity.
5 v  ~/ Y0 ^+ o% u* qThis was determined empirically in Australia, where a new factory
4 _  J; {) d3 {/ Mgenerating 7-Hz tones was located too close to a chicken ranch:
8 p7 T1 h% n$ p0 F( J9 L1 F: \  SWhen the factory started up, all the chickens died. </FONT></P>
* X6 R' `7 Q  ?/ N) A<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone.
; ?  O) |, ^9 M. ]. B: S*/ </FONT></P>% }4 g* S) f, b1 J% Q. v: N
<P><FONT color=#0000ff>int main(void) 4 c- l7 l7 n7 w
{ % H' A7 E+ b  f
sound(7);
% ?9 K0 ~, E2 Z3 Q2 odelay(10000);
" l# X1 y9 U8 d' H6 s& g! Fnosound(); % y9 p( }# B( x; O# ]
}
4 C8 S) X+ u5 x6 E6 b</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-20 20:27 , Processed in 0.418238 second(s), 53 queries .

回顶部