⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 王大刚--c语言编程宝典--m.htm

📁 初学者的良师益友。其中包括C的全部教程。
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0038)http://www.hjflying.8u8.com/cl/031.htm -->
<HTML><HEAD><TITLE>王大刚-->C语言编程宝典-->M</TITLE>
<META http-equiv=Content-Type content="text/html; charset=GB2312">
<META content="王大刚 C语言编程宝典 M" name=keywords>
<META content="王大刚 - C语言编程宝典 - M" name=description>
<STYLE>#page {
	LEFT: 0px; POSITION: absolute; TOP: 0px
}
.tt3 {
	FONT: 9pt/12pt "宋体"
}
.tt2 {
	FONT: 12pt/15pt "宋体"
}
A {
	TEXT-DECORATION: none
}
A:hover {
	COLOR: blue; TEXT-DECORATION: underline
}
</STYLE>

<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY text=#000000 vLink=#006699 aLink=#9900ff link=#006699 bgColor=#ffffff 
leftMargin=3 topMargin=3 marginwidth="3" marginheight="3">
<TABLE cellSpacing=0 cellPadding=10 width="100%" border=0>
  <TBODY>
  <TR>
    <TD class=tt3 vAlign=top width="8%" bgColor=#e0e0e0><STRONG><A 
      href="http://www.hjflying.8u8.com/cl/032.htm">后一页</A><BR><A 
      href="http://www.hjflying.8u8.com/cl/030.htm">前一页</A><BR><A 
      href="http://www.hjflying.8u8.com/cl/index.html">回目录</A><BR><A 
      href="http://www.hjflying.8u8.com/index.htm">回首页</A><BR></STRONG></TD>
    <TD class=tt2 width="84%" bgColor=#f5f8f8>
      <CENTER><B><FONT style="FONT-SIZE: 16.5pt" face=楷体_GB2312 
      color=#ff6666>M</FONT></B></CENTER>
      <HR width="94%" color=#ee9b73 SIZE=1>
      <BR>main()主函数 <BR>
      <P>&nbsp;&nbsp;&nbsp; 每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某 
      <BR>个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 <BR>在哪个地方, 以下几点说明都是适合的。 
      <BR>&nbsp;&nbsp;&nbsp; 1. main() 参数 <BR>&nbsp;&nbsp;&nbsp; 在Turbo 
      C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; * 
      argc:&nbsp; 整数, 为传给main()的命令行参数个数。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; * 
      argv:&nbsp; 字符串数组。 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      以下的版本, argv[0]为空串("") 。 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      argv[1] 为在DOS命令行中执行程序名后的第一个字符串; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      argv[2] 为执行程序名后的第二个字符串; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      ... 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      argv[argc]为NULL。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; *env:&nbsp; 安符串数组。env[] 
      的每一个元素都包含ENVVAR=value形式的字符 <BR>串。其中ENVVAR为环境变量如PATH或87。value 
      为ENVVAR的对应值如C:\DOS, C: <BR>\TURBOC(对于PATH) 或YES(对于87)。 
      <BR>&nbsp;&nbsp;&nbsp; Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中 
      <BR>说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序 <BR>的局部变量。 
      <BR>&nbsp;&nbsp;&nbsp; 请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下 
      <BR>的例子: <BR>&nbsp;&nbsp;&nbsp;&nbsp; main() <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      main(int argc) <BR>&nbsp;&nbsp;&nbsp;&nbsp; main(int argc, char *argv[]) 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; main(int argc, char *argv[], char *env[]) 
      <BR>&nbsp;&nbsp;&nbsp; 其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不 
      <BR>用argv[]的情况。 <BR>&nbsp;&nbsp;&nbsp; 以下提供一样例程序EXAMPLE.EXE,&nbsp; 
      演示如何在main()函数中使用三个参数: <BR>&nbsp;&nbsp;&nbsp;&nbsp; /*program name 
      EXAMPLE.EXE*/ <BR>&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;stdio.h&gt; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;stdlib.h&gt; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; main(int argc, char *argv[], char *env[]) 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; { 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("These 
      are the %d&nbsp; command- line&nbsp; arguments passed&nbsp; to 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      main:\n\n", argc); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0; 
      i&lt;=argc; i++) 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      printf("argv[%d]:%s\n", i, argv[i]); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("\nThe 
      environment string(s)on this system are:\n\n"); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0; 
      env[i]!=NULL; i++) 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      printf(" env[%d]:%s\n", i, env[i]); <BR>&nbsp;&nbsp;&nbsp;&nbsp; } 
      <BR>&nbsp;&nbsp;&nbsp; 如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: 
      <BR>&nbsp;&nbsp;&nbsp; C:\example first_argument "argument with 
      blanks"&nbsp; 3&nbsp; 4&nbsp; "last&nbsp; but <BR>one" stop! 
      <BR>&nbsp;&nbsp;&nbsp; 注意: 可以用双引号括起内含空格的参数, 如本例中的:&nbsp;&nbsp; "&nbsp; 
      argument <BR>with blanks"和"Last but one")。 <BR>&nbsp;&nbsp;&nbsp; 结果是这样的: 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; The value of argc is 7 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; These are the 7 command-linearguments passed 
      to main: <BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[0]:C:\TURBO\EXAMPLE.EXE 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[1]:first_argument 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[2]:argument with blanks 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[3]:3 <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      argv[4]:4 <BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[5]:last but one 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[6]:stop! <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      argv[7]:(NULL) <BR>&nbsp;&nbsp;&nbsp;&nbsp; The environment string(s) on 
      this system are: <BR>&nbsp;&nbsp;&nbsp;&nbsp; env[0]: 
      COMSPEC=C:\COMMAND.COM <BR>&nbsp;&nbsp;&nbsp;&nbsp; env[1]: 
      PROMPT=$P$G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      /*视具体设置而定*/ <BR>&nbsp;&nbsp;&nbsp;&nbsp; env[2]: 
      PATH=C:\DOS;C:\TC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*视具体设置而定*/ <BR>&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; 应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包 
      <BR>括参数间的空格),&nbsp; 这是由DOS 限制的。 <BR>&nbsp; <BR>
      <P>函数名: matherr <BR>功&nbsp; 能: 用户可修改的数学错误处理程序 <BR>用&nbsp; 法: int 
      matherr(struct exception *e); <BR>程序例: <BR>
      <P>/* This is a user-defined matherr function that prevents 
      <BR>&nbsp;&nbsp; any error messages from being printed. */ <BR>
      <P>#include&lt;math.h&gt; <BR>
      <P>int matherr(struct exception *a) <BR>{ <BR>&nbsp;&nbsp; return 1; <BR>} 
      <BR>&nbsp; <BR>&nbsp; <BR>&nbsp; <BR>
      <P>函数名: memccpy <BR>功&nbsp; 能: 从源source中拷贝n个字节到目标destin中 <BR>用&nbsp; 法: 
      void *memccpy(void *destin, void *source, unsigned char ch, 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned n); <BR>程序例: <BR>
      <P>#include &lt;string.h&gt; <BR>#include &lt;stdio.h&gt; <BR>
      <P>int main(void) <BR>{ <BR>&nbsp;&nbsp; char *src = "This is the source 
      string"; <BR>&nbsp;&nbsp; char dest[50]; <BR>&nbsp;&nbsp; char *ptr; <BR>
      <P>&nbsp;&nbsp; ptr = memccpy(dest, src, 'c', strlen(src)); <BR>
      <P>&nbsp;&nbsp; if (ptr) <BR>&nbsp;&nbsp; { 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *ptr = '\0'; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("The character was found:&nbsp; 
      %s\n", dest); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; else 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("The character wasn't found\n"); 
      <BR>&nbsp;&nbsp; return 0; <BR>} <BR>&nbsp; <BR>&nbsp; <BR>
      <P>函数名: malloc <BR>功&nbsp; 能: 内存分配函数 <BR>用&nbsp; 法: void *malloc(unsigned 
      size); <BR>程序例: <BR>
      <P>#include &lt;stdio.h&gt; <BR>#include &lt;string.h&gt; <BR>#include 
      &lt;alloc.h&gt; <BR>#include &lt;process.h&gt; <BR>
      <P>int main(void) <BR>{ <BR>&nbsp;&nbsp; char *str; <BR>
      <P>&nbsp;&nbsp; /* allocate memory for string */ <BR>&nbsp;&nbsp; /* This 
      will generate an error when compiling */ <BR>&nbsp;&nbsp; /* with C++, use 
      the new operator instead. */ <BR>&nbsp;&nbsp; if ((str = malloc(10)) == 
      NULL) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Not 
      enough memory to allocate buffer\n"); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      exit(1);&nbsp; /* terminate program if out of memory */ <BR>&nbsp;&nbsp; } 
      <BR>
      <P>&nbsp;&nbsp; /* copy "Hello" into string */ <BR>&nbsp;&nbsp; 
      strcpy(str, "Hello"); <BR>
      <P>&nbsp;&nbsp; /* display string */ <BR>&nbsp;&nbsp; printf("String is 
      %s\n", str); <BR>
      <P>&nbsp;&nbsp; /* free memory */ <BR>&nbsp;&nbsp; free(str); <BR>
      <P>&nbsp;&nbsp; return 0; <BR>} <BR>&nbsp; <BR>&nbsp; <BR>&nbsp; <BR>
      <P>函数名: memchr <BR>功&nbsp; 能: 在数组的前n个字节中搜索字符 <BR>用&nbsp; 法: void 
      *memchr(void *s, char ch, unsigned n); <BR>程序例: <BR>
      <P>#include &lt;string.h&gt; <BR>#include &lt;stdio.h&gt; <BR>
      <P>int main(void) <BR>{ <BR>&nbsp;&nbsp; char str[17]; <BR>&nbsp;&nbsp; 
      char *ptr; <BR>
      <P>&nbsp;&nbsp; strcpy(str, "This is a string"); <BR>&nbsp;&nbsp; ptr = 
      memchr(str, 'r', strlen(str)); <BR>&nbsp;&nbsp; if (ptr) 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("The character 'r' is at 
      position: %d\n", ptr - str); <BR>&nbsp;&nbsp; else 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("The character was not 
      found\n"); <BR>&nbsp;&nbsp; return 0; <BR>} <BR>&nbsp; <BR>
      <P>函数名: memcpy <BR>功&nbsp; 能: 从源source中拷贝n个字节到目标destin中 <BR>用&nbsp; 法: 
      void *memcpy(void *destin, void *source, unsigned n); <BR>程序例: <BR>
      <P>#include &lt;stdio.h&gt; <BR>#include &lt;string.h&gt; <BR>int 
      main(void) <BR>{ <BR>&nbsp;&nbsp; char src[] = 
      "******************************"; <BR>&nbsp;&nbsp; char dest[] = 
      "abcdefghijlkmnopqrstuvwxyz0123456709"; <BR>&nbsp;&nbsp; char *ptr; 
      <BR>&nbsp;&nbsp; printf("destination before memcpy: %s\n", dest); 
      <BR>&nbsp;&nbsp; ptr = memcpy(dest, src, strlen(src)); <BR>&nbsp;&nbsp; if 
      (ptr) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("destination after 
      memcpy:&nbsp; %s\n", dest); <BR>&nbsp;&nbsp; else 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("memcpy failed\n"); 
      <BR>&nbsp;&nbsp; return 0; <BR>} <BR>&nbsp; <BR>&nbsp; <BR>
      <P>函数名: memicmp <BR>功&nbsp; 能: 比较两个串s1和s2的前n个字节, 忽略大小写 <BR>用&nbsp; 法: int 
      memicmp(void *s1, void *s2, unsigned n); <BR>程序例: <BR>
      <P>#include &lt;stdio.h&gt; <BR>#include &lt;string.h&gt; <BR>
      <P>int main(void) <BR>{ <BR>&nbsp;&nbsp; char *buf1 = "ABCDE123"; 
      <BR>&nbsp;&nbsp; char *buf2 = "abcde456"; <BR>&nbsp;&nbsp; int stat; 
      <BR>&nbsp;&nbsp; stat = memicmp(buf1, buf2, 5); <BR>&nbsp;&nbsp; 
      printf("The strings to position 5 are "); <BR>&nbsp;&nbsp; if (stat) 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("not "); <BR>&nbsp;&nbsp; 
      printf("the same\n"); <BR>&nbsp;&nbsp; return 0; <BR>} <BR>&nbsp; 
      <BR>&nbsp; <BR>
      <P>函数名: memmove <BR>功&nbsp; 能: 移动一块字节 <BR>用&nbsp; 法: void *memmove(void 
      *destin, void *source, unsigned n); <BR>程序例: <BR>
      <P>#include &lt;string.h&gt; <BR>#include &lt;stdio.h&gt; <BR>
      <P>int main(void) <BR>{ <BR>&nbsp; char *dest = 
      "abcdefghijklmnopqrstuvwxyz0123456789"; <BR>&nbsp; char *src = 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -