QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2915|回复: 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>
; X0 w' R! G. R9 E5 u< align=left><FONT color=#ff0000>main()主函数. M4 p3 A0 Z% M8 Y! I- W( Q
</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某 ) e$ C% d" A+ v1 j3 h
个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放
( |( p: H3 ~7 P1 x在哪个地方, 以下几点说明都是适合的。 4 F' o' ]0 k( x0 d$ R! g' w1 ^4 B
<FONT color=#000099>1. main() 参数 </FONT>! \' \+ _0 p$ w: f
在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。 : e& i' {$ x+ |
* argc: 整数, 为传给main()的命令行参数个数。 ! {$ [1 M% m" n/ \0 q% b' H( |( R4 f( t
* argv: 字符串数组。
6 y& }, D" ], ^在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0 : }/ z% o: d& U
以下的版本, argv[0]为空串("") 。 8 [- J  h( Z$ b8 ?2 R: g
argv[1] 为在DOS命令行中执行程序名后的第一个字符串; 8 u  X# a5 B2 F' q: m  @$ F
argv[2] 为执行程序名后的第二个字符串;
5 i6 ]* ]* G2 Q1 }...
5 M% z7 T( I# o' Q* {) N  J# h1 f- gargv[argc]为NULL。
7 V' Q0 r8 ?/ B7 y* S1 ^*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符 & M. s) t  b1 n+ _* w5 D& o3 ~
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C: ; |9 }/ b4 J4 x) W
\TURBOC(对于PATH) 或YES(对于87)。
, |2 G" b' D! |6 e( d7 {8 ~7 oTurbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中
7 L# T* f# Q7 s: m) c6 O* y说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序
* d2 Y3 N0 @% v! e的局部变量。 + s3 ?- g9 w4 u
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下 . a; `+ Z  ?% v) K) x' G
的例子:
/ \; K5 Y" G8 l<FONT color=#0000ff>main()
8 h: i5 B7 Y- k! h) W, R6 bmain(int argc)
3 a$ K, v% N4 u1 W5 x5 kmain(int argc, char *argv[]) * T: A) r" m' |1 M8 y/ G0 {
main(int argc, char *argv[], char *env[]) </FONT>, S1 D6 i* Q' u0 x# i7 o" E* `# q# E
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不 " F% M' X% @6 x
用argv[]的情况。 - J' \" P2 O" [% _0 K
以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
3 V" t( e, U% t: o/ _1 a<FONT color=#0000ff>/*program name EXAMPLE.EXE*/
- J6 h. U/ N% H! U0 N; r; U#include <STDIO.H>
! x2 L' G8 j" N* m; ]#include <STDLIB.H>
7 ?" Y" f' j- w) @# ~- {main(int argc, char *argv[], char *env[])
8 B& Q. d; x* J# A{
& }) M/ {0 K* k; ^7 V! X- Lint i;
9 z# r- x9 V1 kprintf("These are the %d command- line arguments passed to
5 S9 J( X; Q4 X$ s1 ?main:\n\n", argc); , C9 ~4 O: U! s
for(i=0; i&lt;=argc; i++) 1 I/ n! h  u( c, E
printf("argv[%d]:%s\n", i, argv); 2 U( y5 r( a7 C$ {" \
printf("\nThe environment string(s)on this system are:\n\n"); % @* N# t1 A& m8 E" U7 z
for(i=0; env!=NULL; i++) 2 P+ g( F. W) i
printf(" env[%d]:%s\n", i, env);
! r- z) u4 f) Q} </FONT>7 F  `( h, [, g/ K! L( Y6 Y' k
如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: : C3 h- |8 \# D! k! q4 l
C:\example first_argument "argument with blanks" 3 4 "last but , S& K+ w3 X& V; W1 a7 L, b2 R3 @
one" stop!
, b3 t, f1 _4 w! x* g. U注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument
! y9 ~; l( O! X0 z# ]7 Twith blanks"和"Last but one")。
' _! W4 e  }/ ~5 X2 n结果是这样的:
/ S: Z& ?6 l4 \<FONT color=#0000ff>The value of argc is 7
; }$ f. ?  r0 b% Z* k0 FThese are the 7 command-linearguments passed to main:
+ m6 ~9 \- s5 {5 ?* ]5 ]argv[0]:C:\TURBO\EXAMPLE.EXE 2 ?. v- I$ B  r# _+ o. N2 i
argv[1]:first_argument 9 `( s# k, a( h$ H# {, Y8 Q4 r
argv[2]:argument with blanks
  V5 e6 N" E- E8 K: c( aargv[3]:3 . t0 `7 o4 U2 H5 j' U$ P  D
argv[4]:4
4 w- ?! w4 [% C. t9 f6 d2 l* @argv[5]:last but one
9 n0 @: R+ L$ E. a% q* \argv[6]:stop!
& O. b9 \  _' p  p. `+ \& v7 P/ Rargv[7]NULL) ' D" X$ r4 R  J2 k+ h3 L6 G4 h+ R* m
The environment string(s) on this system are: / l- ~, z) m! U
env[0]: COMSPEC=C:\COMMAND.COM , p$ y2 y8 M0 `$ n. T
env[1]: PROMPT=$P$G /*视具体设置而定*/ : l9 j4 M. s# u$ n, h# B5 v( }
env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ # D0 `& c& n; {2 U5 l* D8 l: ?1 f
</FONT>. P  y, R4 w$ |% _4 o( j; n
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
" u, _: e* k& i括参数间的空格), 这是由DOS 限制的。 , p# B+ M, J, a
</P># J( b; d6 e& v$ \
<><FONT color=#ff0000>函数名: matherr </FONT># u6 V$ x- b0 @6 a; T
功 能: 用户可修改的数学错误处理程序 4 k* S  e. ^& |$ ?* w3 ^: n! i4 o) a
用 法: int matherr(struct exception *e); ' T& K5 x7 @: s6 @! s7 C
程序例: </P>
! I% j' F: O% @& K# n! _<><FONT color=#0000ff>/* This is a user-defined matherr function that prevents
2 ~8 g2 I& c$ X5 @8 H: Q7 s, ?any error messages from being printed. */ </FONT></P>
; J9 \. C# K% X! I- i; ?" Y3 y<><FONT color=#0000ff>#include<MATH.H> </FONT></P>
0 X* {; g2 B/ X! V5 v<><FONT color=#0000ff>int matherr(struct exception *a) 8 v  t+ h% b0 C8 }2 `7 E' [- O
{
, L9 {# m/ s' o7 g( ?return 1;
' L0 X* \1 \- S. ~9 B} ! @2 t0 j9 ^9 D3 T8 a( O6 ^- u
</FONT>
5 a; k& c# ^* g9 k7 C! s( h+ T1 Z: n7 H: L7 C4 E0 M
</P>. ?& i4 d( b+ w: n7 Z0 a" F0 G$ N
<><FONT color=#ff0000>函数名: memccpy </FONT>, m4 R  V; ]( w8 r/ U' `7 c7 K( M
功 能: 从源source中拷贝n个字节到目标destin中
6 o1 f' h$ I. U2 z) x用 法: void *memccpy(void *destin, void *source, unsigned char ch, , K/ B$ D! [/ i4 F
unsigned n);
( B1 s. q0 V- x0 h程序例: </P>* ~# g' d. ~3 p
<><FONT color=#0000ff>#include <STRING.H>0 y7 A6 D6 c4 [9 ?: y( Z; |8 A
#include <STDIO.H></FONT></P>* Z: `) U" o; n2 M: H
<><FONT color=#0000ff>int main(void)
3 Y( H! ^; o  ?{
- M  e. G8 i; k1 g9 k6 y, w$ uchar *src = "This is the source string";
% D: s! |: @( i: t2 a$ A, r, E$ Lchar dest[50];
% B0 e* N! q# s  D4 _# N: ]$ Zchar *ptr; </FONT></P>
3 A/ |  |# V& D6 r# K# k5 I5 c<><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>& x7 i# R8 s9 [1 v
<><FONT color=#0000ff>if (ptr)   h2 a& Q* C4 l. k0 d0 ?/ m  _1 l
{
) W# w9 U" n* }*ptr = '\0'; * p; E( x+ L: z
printf("The character was found: %s\n", dest); 6 s- m: _* ?, U+ P
} # A/ B% J+ O  ~- o3 g+ t* P
else : o) Z. d% S) o4 J* t0 A' \3 p
printf("The character wasn't found\n"); 9 {4 @& l+ _/ p2 Q# O: p! w) d
return 0;
. `) N1 D, m8 m. k+ P} 7 T) s% t0 y$ b% e3 c3 X: x% O
</FONT>
1 p. x5 K  \: _. i$ Y, c) v3 _. |</P>0 U/ P3 v' e  [/ I* F
<><FONT color=#ff0000>函数名: malloc</FONT>
5 ^( t! D& k# S功 能: 内存分配函数 3 o8 q# Y8 T1 J
用 法: void *malloc(unsigned size); $ J8 W: H# G8 Q, V! |3 f
程序例: </P>9 }' Z( i% N/ T3 b5 g0 z
<><FONT color=#0000ff>#include <STDIO.H>7 u3 q  f* m, }9 O5 V8 J
#include <STRING.H>
  D5 k9 e/ {3 k, P4 p% g#include <ALLOC.H>& ]6 W5 x. C( g" V* W2 i. U
#include <ROCESS.H></FONT></P>! |/ p7 f+ Q6 K% w( x% h, u  y
<><FONT color=#0000ff>int main(void)
) }( O# R5 C2 o6 U/ v3 y1 X; u{ 9 |% y8 O8 @' Z  W
char *str; </FONT></P>
1 K$ H) k8 w  r  F; p<><FONT color=#0000ff>/* allocate memory for string */ ( x/ H$ I3 U/ w9 b1 `
/* This will generate an error when compiling */
% ?- V. V  S* ?/* with C++, use the new operator instead. */
) d& q6 f; y: Tif ((str = malloc(10)) == NULL) ( q9 C$ e$ F& T% x8 [( W
{
8 _0 d  `) I+ _* Bprintf("Not enough memory to allocate buffer\n"); - i3 G2 |& p3 V2 ]
exit(1); /* terminate program if out of memory */ 9 N/ |7 R! ~. u8 D$ b" k6 z) s% t
} </FONT></P>
" K, `* s: w, W* j. W<><FONT color=#0000ff>/* copy "Hello" into string */ $ P  H- Q. a3 n) O4 g3 S" d
strcpy(str, "Hello"); </FONT></P>! u5 \5 a% z4 R. f
<><FONT color=#0000ff>/* display string */
) w: q( A+ U& p; d% x8 Mprintf("String is %s\n", str); </FONT></P>7 p2 _% J2 V) B; Y  Z6 n% C& G, `
<><FONT color=#0000ff>/* free memory */ 3 }6 d; B+ u4 V" G
free(str); </FONT></P>
0 }, E: N' E9 Z( }* T<><FONT color=#0000ff>return 0;
- b% N' Q5 {  a% z} , I- s: \# h  G9 n5 ]+ ]
9 w! z5 t4 y1 O4 T" \4 i, h  G3 r4 G
</FONT>, V4 I/ C9 G/ v' l9 A+ ?* a  u' ?
</P>
" u& M/ A: _; k0 ?* Q<><FONT color=#ff0000>函数名: memchr</FONT> 4 G  l; j8 E( p8 C& j2 h/ T
功 能: 在数组的前n个字节中搜索字符
. u9 _$ h! L: u. E% O( R+ v6 M6 h# S用 法: void *memchr(void *s, char ch, unsigned n); / l# B# ?8 Q7 G
程序例: </P>
% e7 j) V* J; J: k' x0 {! g<><FONT color=#0000ff>#include <STRING.H>: F. S! f+ ~# w/ ?8 I
#include <STDIO.H></FONT></P>) K7 i* G1 L4 b4 H  n/ f; F5 ?
<><FONT color=#0000ff>int main(void) 2 C2 {: Q! l& Y* G7 {0 t
{
. l/ j4 ]# O4 l3 L6 l$ m+ h( Z* \char str[17]; & j( f* {$ [/ L  v# |0 T- B; |! n
char *ptr; </FONT></P>
1 `- S" I6 c7 O- K* E% H- a7 L9 ^3 b' T" a<><FONT color=#0000ff>strcpy(str, "This is a string"); 2 r7 x4 O4 R0 d9 j
ptr = memchr(str, 'r', strlen(str)); 2 R" u8 H3 u/ L  \
if (ptr)
5 G/ j* H% P  C6 X3 i/ M- Nprintf("The character 'r' is at position: %d\n", ptr - str);
  G2 V& R9 r; g$ v' N$ belse ! |- t3 l6 q. e+ Y# T  Q
printf("The character was not found\n"); : {2 V: _, G$ N
return 0; ! \) d1 c1 g6 ^  D. S9 r
} 5 S$ o2 f; y- P
</FONT></P>
& ]+ L3 r6 j0 Q* K1 }<><FONT color=#ff0000>函数名: memcpy </FONT>
- Y1 ]6 C* ?" A, g# r& \功 能: 从源source中拷贝n个字节到目标destin中 + {2 }5 E  H4 @0 p9 i' g
用 法: void *memcpy(void *destin, void *source, unsigned n);
9 I* c* U9 d* G" d" f2 v$ _4 k0 N程序例: </P>
, C& d2 ?; Q; H0 m+ g<><FONT color=#0000ff>#include <STDIO.H>7 P- S3 B% f+ m0 k3 R
#include <STRING.H>, e0 _& e. s, i+ D3 B. p% o
int main(void) 2 ]2 z! o& P( i7 M$ z, v
{
# C  t" n0 ]9 W5 B8 ~3 X7 Zchar src[] = "******************************";
/ m' {4 f/ F; z7 L$ n. @$ r1 hchar dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";
9 d2 k+ C( M) X" f& ?char *ptr; 8 ?9 A% R& b0 Z9 e
printf("destination before memcpy: %s\n", dest); 3 N6 z7 m7 f& B1 Y5 o3 _
ptr = memcpy(dest, src, strlen(src));
! d! i  f# H) C1 I/ n# q, Cif (ptr)
, e; |, o* @2 Q2 bprintf("destination after memcpy: %s\n", dest);
( ?$ i$ e; I# |/ G% }else ' v0 Z, k8 @5 z1 T, ^4 r
printf("memcpy failed\n");
, K$ o) f3 g, r4 ]5 u- ?return 0; 9 L4 ]. M6 d7 c, z1 o5 }
} + V# M: O; Q* s6 {  n' j
</FONT>5 S9 ]/ Z4 p+ n6 G- n
</P>" R0 m4 [2 R0 n. q! h7 n6 Z0 J' J
<><FONT color=#ff0000>函数名: memicmp </FONT>
4 g. _! T- j  u$ \$ G* V功 能: 比较两个串s1和s2的前n个字节, 忽略大小写
# k, ?* F: q1 n# G' n2 H用 法: int memicmp(void *s1, void *s2, unsigned n);
* B. Q0 V4 e7 f+ `程序例: </P>% j9 ?( f  Y. }( {' Q8 [3 k
<><FONT color=#0000ff>#include <STDIO.H>
0 h1 q: h0 U2 n#include <STRING.H></FONT></P>
2 N* M* C  y2 `4 F$ n+ ~<><FONT color=#0000ff>int main(void)
# S7 a: N; L4 T{
4 D) i3 S' w( U' W, G. Dchar *buf1 = "ABCDE123"; 3 I3 Q! l" B3 O7 ~3 k- x! c
char *buf2 = "abcde456";
2 S- a0 ~7 y9 p! _& }; d5 B! j% c9 yint stat; " v6 @( N2 }- f" Z+ S+ A3 e- e  m
stat = memicmp(buf1, buf2, 5); : W* _! F# X, H, _& Z4 [
printf("The strings to position 5 are "); ( |) ~5 y3 N" y- V* s8 T
if (stat)
  M' I& n7 i, q% p" C2 Z% Tprintf("not ");
, E8 Q% @$ h" h# @# Bprintf("the same\n");
9 S: d. c9 {0 ?8 I5 `9 @return 0; 6 I! w: f) w  }( b- P, v$ Y8 R
} 9 q5 z# J' I/ u& `# M4 j' }1 O8 w# W
</FONT>0 {  O1 k# [# I3 \: v/ \3 h( G
</P>
# Y0 h5 b! C3 R' f<><FONT color=#ff0000>函数名: memmove </FONT>
* a$ n. ?# |9 Z; U功 能: 移动一块字节 $ z2 C) y+ z5 G2 @+ h
用 法: void *memmove(void *destin, void *source, unsigned n);
0 b1 H9 k9 L6 k. i程序例: </P>+ S# B5 V; p& o. C
<P><FONT color=#0000ff>#include <STRING.H>
) z6 G1 _3 V* k+ A6 ?5 d#include <STDIO.H></FONT></P>
* A4 y( D) X9 d( p. ?<P><FONT color=#0000ff>int main(void) * c! k9 ]2 [8 c$ _8 z! s
{ 7 |* u/ ~- J5 Q% j4 X* R8 T
char *dest = "abcdefghijklmnopqrstuvwxyz0123456789";
- s0 @, E$ F- R8 lchar *src = "******************************"; 9 ?" N" ?8 O$ d# D" ~% g6 U6 j* R
printf("destination prior to memmove: %s\n", dest);
' [0 T* |& A3 X% J& Jmemmove(dest, src, 26); $ @3 v. N  ~$ @3 D
printf("destination after memmove: %s\n", dest);
% b6 v9 Q" S! q* M4 r1 L3 ]return 0; " }% ?. N. n1 `0 \, Y8 C' s; Z+ z3 w/ a
}
. ~6 [  C/ w, R3 I6 j! b" D$ d/ m/ `& p+ g
</FONT>
1 Y! B: U9 c. Y! O0 ~/ k7 v5 G</P>
8 H! s7 ~5 R; h<P><FONT color=#ff0000>函数名: memset </FONT>5 h  }' X/ f$ j9 S9 X
功 能: 设置s中的所有字节为ch, s数组的大小由n给定
6 s2 U  n8 I, O用 法: void *memset(void *s, char ch, unsigned n);
# Y; o! ^" t) F程序例: </P>
% l- v& \" T" ?, w4 ?% x# l<P><FONT color=#0000ff>#include <STRING.H>7 r7 o0 C+ [4 e
#include <STDIO.H>! f: G3 G1 u! h) M, Y  {3 k1 p7 e
#include <MEM.H></FONT></P>9 G' @" ~" k: q& L' U+ s7 h
<P><FONT color=#0000ff>int main(void) * X  m) G3 X  k8 G
{
  y' @( l; l: Y! Y% `char buffer[] = "Hello world\n"; </FONT></P>. w" L: w! O( E0 X
<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer); - `4 f5 R6 x- @. n/ \, E# r$ b$ Y
memset(buffer, '*', strlen(buffer) - 1);
( S5 J! t/ G& x, Oprintf("Buffer after memset: %s\n", buffer); ; E  d5 ^4 @8 `  e+ `+ ^
return 0;   O0 |: `# A  ]/ y# j" o
} </FONT>5 R! l% [$ y/ D5 B# y% P4 ]

; H% L: B4 j- P</P>" T# G5 H1 |: x1 p
<P><FONT color=#ff0000>函数名: mkdir </FONT>& J% I5 [* d  x1 I8 M& S& ]5 U
功 能: 建立一个目录
- L" ]7 o# L4 ?% C9 w用 法: int mkdir(char *pathname); 6 I' W2 k" L. B9 O
程序例: </P>
2 `2 q+ |, V8 k. W/ g4 v" V<P><FONT color=#0000ff>#include <STDIO.H>* ~; Y) z) W+ j, ~; k
#include <CONIO.H>
: T. S6 H5 i. k/ w% [, ^#include <PROCESS.H>
- s! ^3 N4 l5 W6 H#include <DIR.H></FONT></P>. p/ ~" b4 S0 W
<P><FONT color=#0000ff>int main(void)
1 h$ N# d# v1 B{
4 I7 b" D0 l: nint status; </FONT></P>9 D8 @2 p0 c9 |: t5 Y
<P><FONT color=#0000ff>clrscr();
( O+ s) t, [) @- |status = mkdir("asdfjklm");
8 v: H4 O; y3 E0 p6 ]  B(!status) ? (printf("Directory created\n")) :
: Y( z" F7 _- D- E! x, r(printf("Unable to create directory\n")); </FONT></P># t- L' Z' f$ n
<P><FONT color=#0000ff>getch();
3 e4 z% p9 x/ n! S% w% D2 ^system("dir"); $ s7 u. n  h1 w
getch(); </FONT></P>
/ `4 s% |: L4 {7 l6 P1 a+ J9 l$ O. y<P><FONT color=#0000ff>status = rmdir("asdfjklm"); ; C, n; F9 ?4 D6 z
(!status) ? (printf("Directory deleted\n")) : / ?& e* |, ~) V
(perror("Unable to delete directory")); </FONT></P>
* Y# c7 |! d/ D: W- |* R<P><FONT color=#0000ff>return 0;
: L+ ^3 }- e* @3 k9 N6 c7 M1 ?} 6 n. ~/ G0 z. I' W. U

. u$ @. H) T9 a6 W/ v</FONT>3 ^% F. k$ I# L# O" i, p
</P>
8 \! o& E3 Y* u, a3 k  S<P><FONT color=#ff0000>函数名: mktemp </FONT>* C# k7 K: X: T' U( f
功 能: 建立唯一的文件名
  _2 @# q! ]$ c用 法: char *mktemp(char *template); 8 c  H& o9 Y# S. K3 J
程序例: </P>; W, N, D, f3 |9 L+ i: Q
<P><FONT color=#0000ff>#include <DIR.H>7 Z+ c( k$ f; B+ y: ~7 P4 L% Z1 M
#include <STDIO.H></FONT></P>
( s% d5 Q- V3 f8 H<P><FONT color=#0000ff>int main(void) : I* g2 ^! r6 H# f0 S7 z+ Z
{ 9 G' [0 {3 l+ |- O
/* fname defines the template for the ) T( M: h' T' ?  X9 I
temporary file. */ </FONT></P>/ O  i$ a3 ?' Q$ N
<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>
/ r& i8 a" Y% r2 E& q<P><FONT color=#0000ff>ptr = mktemp(fname); 3 L2 K1 L& e0 n0 E" t
printf("%s\n",ptr);
  X( N# e. v5 \return 0;
3 R/ p$ t2 |4 D} 2 M2 ]" ?0 O3 t* ?6 |$ c+ `
</FONT>. M1 u" l' m$ H  x0 d
</P>
0 [& l( f/ u" A% \: _0 f9 i<P><FONT color=#ff0000>函数名: MK_FP </FONT>
& O9 A; j, |1 ~6 q1 u功 能: 设置一个远指针
# H1 O; }. u( u. b4 H% U用 法: void far *MK_FP(unsigned seg, unsigned off); 1 h* M7 c0 E+ A1 B8 T3 e
程序例: </P>
2 \- C9 W$ Q- o* x3 s: J/ D  V<P><FONT color=#0000ff>#include <DOS.H>7 E  [% H9 u3 ?: H
#include <GRAPHICS.H></FONT></P>
9 y: v$ B6 \' c4 z4 E+ o<P><FONT color=#0000ff>int main(void)
$ \* x) T6 [( v{ . w7 R$ T: `' X+ R; g
int gd, gm, i;
8 k! O( v* |5 P7 }unsigned int far *screen; </FONT></P>
# N4 j5 L% {% M+ H( o<P><FONT color=#0000ff>detectgraph(&amp;gd, &amp;gm); , R2 F5 C" x! p& X
if (gd == HERCMONO)   ]1 e5 X: L4 l+ v* S& e% @
screen = MK_FP(0xB000, 0);
% h& e( {2 [$ V: Uelse 6 I8 e2 j& a. ?2 x; A2 k2 Y, x5 }9 Y
screen = MK_FP(0xB800, 0);
3 B9 b* X6 A2 g; T/ N5 jfor (i=0; i&lt;26; i++)
/ l9 T3 U5 E7 V8 e) Xscreen = 0x0700 + ('a' + i);
* `* V8 j  P; \" w% [return 0;
* ~% _# q. k4 K6 J% ?} " b$ P3 _5 [7 k' G" M
</FONT>
0 K* ?' T+ h" G& o0 e% C</P>
. t% x3 }  e; Y' i* F<P><FONT color=#ff0000>函数名: modf </FONT>
- j; K: a, |8 q/ ?! j功 能: 把数分为指数和尾数
4 c$ l2 x9 A! A5 @6 h* B( k+ F用 法: double modf(double value, double *iptr);
: {$ d5 L: t0 l+ U程序例: </P>4 [$ v. B* ^; b
<P><FONT color=#0000ff>#include <MATH.H>3 @1 v* g& i; t1 M
#include <STDIO.H></FONT></P>
  n* f8 I" w6 L% m5 X) ]1 h<P><FONT color=#0000ff>int main(void)
! r5 w& u$ ~. ~5 m{ : v/ `. V; @' y
double fraction, integer; " e  Z! a; t/ Z  j- L5 O
double number = 100000.567; </FONT></P>
: A% J- N1 k1 R8 n<P><FONT color=#0000ff>fraction = modf(number, &amp;integer);
! a; L: q0 p2 h0 v% o2 ]printf("The whole and fractional parts of %lf are %lf and %lf\n",
+ ]. i* \6 a/ M) V' Knumber, integer, fraction); 3 H4 H. ]( z3 ]1 P& L
return 0; 9 W/ T7 Q; ^% m! f) a5 x
} </FONT>5 `- L5 s  @5 I
- I6 B# u- k# r  t5 h
</P>
: [! G/ E6 w& g9 i! c7 ]<P><FONT color=#ff0000>函数名: movedata </FONT>
" ?1 H* k& G* u8 w8 a8 b4 {功 能: 拷贝字节 3 H  o/ L; n& x9 c9 ?  Q
用 法: void movedata(int segsrc, int offsrc, int segdest, 2 I! S7 R* v0 J/ Y6 j+ m
int offdest, unsigned numbytes); $ H" @5 ~) U, c5 D
程序例: </P>
& }, n/ [3 B5 S, R* y<P><FONT color=#0000ff>#include <MEM.H></FONT></P>
4 Z! b; _' T+ V* R% k<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>  C& E: [2 f& t% ~' B! m8 @
<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */
. w4 k" o6 w1 Y7 Nvoid save_mono_screen(char near *buffer)
; [& ~2 h' r0 k  Q{ / N1 L# j: p" E" m0 E2 v2 K1 c( a4 H
movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);
! C% y$ Z9 F) `) c$ k% ~} </FONT></P>
3 k; M( d/ i. m9 s<P><FONT color=#0000ff>int main(void) % x% ^% H( I  G0 D1 _
{
; ^+ e" o$ {( O. N9 ]  ^char buf[80*25*2];
0 a2 E1 M$ l2 D2 gsave_mono_screen(buf);
' v, ]5 R1 k" T} % S4 B2 \5 f, n: X
</FONT>
* }* i5 E$ I& ?$ r' n) E</P>9 T8 X* D6 k3 k. j% N2 A
<P><FONT color=#ff0000>函数名: moverel </FONT>- Z5 ]# y# S5 F* {, p
功 能: 将当前位置(CP)移动一相对距离
( N# _; y0 ^" m6 q, B2 N! I用 法: void far moverel(int dx, int dy); . X6 B2 P# M' @
程序例: </P>
2 e# a5 _  P) N, T<P><FONT color=#0000ff>#include <GRAPHICS.H>& _6 D0 a% r5 B) D0 q* ]
#include <STDLIB.H>" G4 L- C3 o7 ?/ z. }
#include <STDIO.H>& F+ O( v9 }7 R0 w0 f$ N
#include <CONIO.H></FONT></P>& z* ^& |- \9 @& [7 V
<P><FONT color=#0000ff>int main(void) 2 X! {# J; a4 [* s
{ 7 n2 ~& x3 v- n6 O' H
/* request auto detection */
7 p; U5 |6 H) \int gdriver = DETECT, gmode, errorcode; / h8 R4 n  w; y1 ]% c
char msg[80]; </FONT></P>8 y; D+ i$ U8 C% E3 R
<P><FONT color=#0000ff>/* initialize graphics and local variables */ ; K; z+ M. B/ D. x8 T
initgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>
; k9 E0 Q$ E/ a<P><FONT color=#0000ff>/* read result of initialization */ 5 W7 r: S! |- T& u" L; M+ N, Q8 o
errorcode = graphresult(); # [1 q0 ^6 F7 L, v) Y' d% q
if (errorcode != grOk) /* an error occurred */ * i9 P/ l" M$ H% {, w% k
{
1 I8 T  F5 o' e4 r! Xprintf("Graphics error: %s\n", grapherrormsg(errorcode));
- ^% w0 [: u, D( L( j  F9 ]4 vprintf("Press any key to halt:");
1 @& B* n$ f* G8 ogetch();
2 u2 ^% P! m/ G- v* e3 ~exit(1); /* terminate with an error code */ ) j. `9 V4 S" z4 C; `! w% P$ A
} </FONT></P>
. q6 c# \2 O% S6 H<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ . K1 U2 }) p1 V5 X
moveto(20, 30); </FONT></P>* r/ v2 i; {& O/ P: J) ?
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ 8 A. `& y! w4 ]
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
$ t) i8 c& Z( F- ^+ }' q<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
4 [) {* j4 G9 d, n- ~( e0 J$ Csprintf(msg, " (%d, %d)", getx(), gety()); 5 ^; L. k. b/ j  `
outtextxy(20, 30, msg); </FONT></P>
, c* a; t6 `* j4 Y8 q4 ]9 d<P><FONT color=#0000ff>/* move to a point a relative distance */
: `5 M& D) x. I! ^/* away from the current value of C.P. */ # k' r) t0 y; l1 Z, e
moverel(100, 100); </FONT></P>
$ T) d- E, E$ C<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
  W& ^# L0 b; o. [" a0 y; w) mputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
% V6 _" d; _) Z3 _3 v) g<P><FONT color=#0000ff>/* create and output a message at C.P. */
8 n+ C* _! K# c- Z, Bsprintf(msg, " (%d, %d)", getx(), gety()); 3 G$ C) J& _# I/ e# j- d# V
outtext(msg); </FONT></P>
3 Q0 ^0 U; Q' t0 J& T4 x9 N<P><FONT color=#0000ff>/* clean up */
6 q6 Q9 G, y" I7 ?- Bgetch(); 7 X6 ^. z- A1 F# [/ N6 |
closegraph();
; j! x6 E) \! I5 H4 t% x" X. ureturn 0;
6 ~. _  O5 N8 @3 U% U. K+ M}
1 [  R9 c/ D9 `# l" u9 i& B  l</FONT>
1 B1 D4 }' z+ ^( k& G9 d# ?</P>1 H% _2 `% |/ H6 u2 k# h4 @
<P><FONT color=#ff0000>函数名: movetext</FONT>
8 F3 M* d1 f% U1 M功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域 * h4 F+ |8 [% q) b" b: P
用 法: int movetext(int left, int top, int right, int bottom, ) m7 Q' ]0 N, B3 ^# }& f9 R
int newleft, int newtop); " V$ m$ ]3 I4 K: ^' r3 {1 |2 @8 E
程序例:
  C4 J3 |/ w; C' b! n+ k. n/ _<FONT color=#0000ff>#include <CONIO.H>% u2 y# _) j+ p2 F4 m1 J6 S3 j
#include <STRING.H></FONT></P>
6 E' s$ x. C5 c<P><FONT color=#0000ff>int main(void) 5 S: b5 V) ?2 g" g. {
{ . s# T2 |& {$ H( _, H. I
char *str = "This is a test string"; </FONT></P>
5 i: \: y9 X' S% c<P><FONT color=#0000ff>clrscr();
" L4 c2 E( a4 f! ?7 \cputs(str);
( b2 k; }7 U5 M! \getch(); </FONT></P>$ s0 d) e% S' f: N& w& a6 J
<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10);
1 n3 I8 W  a+ X% A1 d" o" Dgetch(); </FONT></P>- ~. c& [0 \$ ?" x3 D& v
<P><FONT color=#0000ff>return 0;
5 Y& w/ }% B" Y  x- m}
* f9 }5 k7 |. h9 L3 P2 `- Y% g% C, `( _2 D( s  y. g) V5 O$ i
</FONT></P>
; j3 U- y" o+ a; M, s1 O<P><FONT color=#ff0000>函数名: moveto</FONT> 1 f! P2 h- J9 l" R3 x- Y
功 能: 将CP移到(x, y)
$ p9 j4 [$ I- u1 w用 法: void far moveto(int x, int y);   S' D7 t) T0 F7 ?
程序例: </P>
* Z/ N) ~  T9 z9 u: f- G<P><FONT color=#0000ff>#include <GRAPHICS.H>/ o1 w. h5 O7 F4 i" a0 d/ m  U
#include <STDLIB.H>- F. w5 N2 ]3 N* a; o" a! w& y: b+ q. N
#include <STDIO.H>
9 N* _/ o! C+ h9 c$ n#include <CONIO.H></FONT></P>3 S( {8 L+ L+ A5 r& i
<P><FONT color=#0000ff>int main(void)
" V  A( O+ V; n8 k! a: g7 {{
* o5 ~4 ]. m0 R/* request auto detection */ - }* M- g/ k1 ]8 H6 Q. M
int gdriver = DETECT, gmode, errorcode;
) I: w* u9 N9 P2 D# nchar msg[80]; </FONT></P>; Y4 |6 M# g6 i3 Z: Z
<P><FONT color=#0000ff>/* initialize graphics and local variables */
0 \0 e( }2 m" f8 v- sinitgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>
8 V2 M. a9 r" B: L# C, N/ K2 h<P><FONT color=#0000ff>/* read result of initialization */
- N% B9 M! e0 Ierrorcode = graphresult(); ! j/ M/ v, I5 v
if (errorcode != grOk) /* an error occurred */ 8 ?, k/ C* i) O8 W! T' D3 J2 i
{
8 k8 [' J) F/ cprintf("Graphics error: %s\n", grapherrormsg(errorcode));
) E1 \$ L/ v  B' N% O4 P# v/ qprintf("Press any key to halt:");
- P  n8 A. Q  K6 S" jgetch(); * b' A0 z. m( N& D* V
exit(1); /* terminate with an error code */
6 w1 T+ M' c# E# ?8 n9 K: s} </FONT></P>
7 M' K9 m! a: g- c/ H<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
1 K: l6 y! ~4 i6 y0 [4 [moveto(20, 30); </FONT></P>
+ x9 i+ h4 Y4 F<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ : [3 M6 U* R6 @. Q$ f. Y. V
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>; o$ r% ]8 c& Q/ _4 e0 [* b
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ / v7 B( }( H' P% t$ M: c
sprintf(msg, " (%d, %d)", getx(), gety()); 6 B: h- h. P' X6 A0 p
outtextxy(20, 30, msg); </FONT></P>* M; h; C9 i  P7 ?( Q) H" S
<P><FONT color=#0000ff>/* move to (100, 100) */
& H) c- @  r  |# Vmoveto(100, 100); </FONT></P>2 f3 [! d8 D) t2 a/ A# L2 ~
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
$ _: c, H+ w  {9 m0 p$ aputpixel(getx(), gety(), getmaxcolor()); </FONT></P>8 n7 o6 N, s  l" G% \6 l
<P><FONT color=#0000ff>/* create and output a message at C.P. */
/ W1 ?% L/ h* [sprintf(msg, " (%d, %d)", getx(), gety());
" N# A5 B0 O, A( ?! a/ c5 `outtext(msg); </FONT></P>, X! c( [% U/ X. W" \7 P1 T% q+ Z
<P><FONT color=#0000ff>/* clean up */
( v/ ~. X2 Y4 d! ~; ^7 j7 C. ~getch();
6 e& v! A9 N5 Mclosegraph(); 0 e! \( ?* o% [" v! @) O+ k
return 0; 7 [5 u0 K7 ~+ h" ^% {/ p# y" g
}
( ~/ P$ N: m8 M1 e</FONT>
( E. Y6 e9 t. L1 ?/ j; L</P>+ }" P9 Q' |" A' C; f4 O
<P><FONT color=#ff0000>函数名: movemem </FONT>& I6 w  {) N7 f7 z# M* f
功 能: 移动一块字节
0 F/ g/ A7 p3 w6 w& |& }8 z2 p用 法: void movemem(void *source, void *destin, unsigned len); % a- z4 Y* N: G! W( ^
程序例: </P>
7 o& l& @2 L. R$ v<P><FONT color=#0000ff>#include <MEM.H>8 w) M9 A$ N+ I4 f- A/ z" n
#include <ALLOC.H>
2 w/ }' ^) Y) w( T+ a#include <STDIO.H>. }" p" k# S! \5 I6 e1 @/ Z
#include <STRING.H></FONT></P>
0 }0 D( K! d9 f9 f0 X5 J<P><FONT color=#0000ff>int main(void) " S6 {) F' d6 L9 `# @
{ 8 v/ y9 k5 R4 ]( j! _
char *source = "Borland International";
$ K" U$ i7 G7 }6 b( Q8 I7 mchar *destination;
  L% [8 e4 D+ F9 e2 l( s; M: lint length; </FONT></P>5 D, g$ K: ]8 f6 O$ L6 n# M
<P><FONT color=#0000ff>length = strlen(source);
, J, @4 `' W! a- D/ O& O$ T1 |. [7 Odestination = malloc(length + 1); 8 z% l* i  d1 |. K4 X; _! Q
movmem(source,destination,length); 0 g" E" T# X: O8 l) P8 a
printf("%s\n",destination); </FONT></P>8 b: l5 L% a7 L* H% Z% Y
<P><FONT color=#0000ff>return 0; : h1 s9 w% v8 A7 l  x, r8 P) C
} ; |( f2 J( ~" z# O$ q3 N
5 q! s* I: R: ]- l3 g/ Y
</FONT></P>
) h" w, F; k2 a1 L( Q$ s3 I<P><FONT color=#ff0000>函数名: normvideo </FONT>1 c- T* {) k" j$ s
功 能: 选择正常亮度字符
  M1 v" u( {# Y% @用 法: void normvideo(void);
8 G8 }0 _2 Q( e程序例: </P>  r0 `/ U5 U/ B
<P><FONT color=#0000ff>#include <CONIO.H></FONT></P># J1 r, x( s+ w: J* z
<P><FONT color=#0000ff>int main(void) ; `) L0 p' \/ o- v
{ ! v  J2 I: r# E8 a$ n6 F6 ]
normvideo();
" F( ?4 b' ~, F4 R6 b9 vcprintf("NORMAL Intensity Text\r\n");
  H1 ^$ g4 [& ~8 g6 zreturn 0; & U0 [7 f# B/ {# D/ r8 j* D
} ; ~  S0 {1 [- m6 c

$ j& c0 o1 l: {7 `% b! i</FONT></P>7 u5 m6 N( N6 g4 }5 y/ U: y
<P><FONT color=#ff0000>函数名: nosound</FONT>
' ^+ v. v+ N( T2 n功 能: 关闭PC扬声器
3 c' |/ D+ e( L用 法: void nosound(void);
8 v8 w) u3 P" G; {& a6 y* a程序例: </P>6 D. r3 P' j; y$ f1 Z
<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>" J) g) z/ J& H  b+ ]: m( w' Y
<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity. % V3 f  E% I$ w4 [# @) A
This was determined empirically in Australia, where a new factory 9 S1 b; m& j6 n7 \1 e# U
generating 7-Hz tones was located too close to a chicken ranch:
2 U9 C1 V  V9 Z3 sWhen the factory started up, all the chickens died. </FONT></P>
0 }1 s! a( E) _% L<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone.
& U  r: u; l. }' N+ v7 [*/ </FONT></P>
* L& G7 T2 E# H: a7 C<P><FONT color=#0000ff>int main(void) . w. H! ]: i& e( d, U+ u
{ - R% m) T5 Z2 j
sound(7); ) H, @! q+ b+ |3 |, a
delay(10000);
" V; `, h' d4 b. Anosound(); + G0 l: i4 c5 k4 |
}
. j* O) c3 S/ k0 G( C# T! N$ v</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 06:15 , Processed in 0.393254 second(s), 52 queries .

回顶部