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

📄 fm.htm

📁 c语言基本的应用便于初学者学习使用 简单易懂
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb_2312-80">
<meta name="Author" content="wdg">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>网上学堂 --> C语言编程宝典之一 -->main()主函数 </title>
</head>

<body>
<div align="center"><center>

<table border="1" cellpadding="4" width="640"
bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
    <tr>
        <td bgcolor="#FFE6B0" bordercolor="#8080FF" class="p9"><font
        color="#BB0000">导航条:--&gt;</font> <a
        href="../../index.html">网上学堂</a> --&gt; <a
        href="../tcindex.htm"><font face="宋体">C</font>语言编程宝典之一</a>
        --&gt;main()主函数 </td>
    </tr>
    <tr>
        <td bordercolor="#8080FF" class="p9">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        main()主函数 <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]为空串(&quot;&quot;) 。 <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(&quot;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&quot;, 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(&quot;argv[%d]:%s\n&quot;, i, argv[i]); <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        printf(&quot;\nThe environment string(s)on this system
        are:\n\n&quot;); <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(&quot; env[%d]:%s\n&quot;, i, env[i]); <br>
        &nbsp;&nbsp;&nbsp;&nbsp; } <br>
        &nbsp;&nbsp;&nbsp; 如果在DOS 提示符下,
        按以下方式运行EXAMPLE.EXE: <br>
        &nbsp;&nbsp;&nbsp; C:\example first_argument
        &quot;argument with blanks&quot;&nbsp; 3&nbsp; 4&nbsp;
        &quot;last&nbsp; but <br>
        one&quot; stop! <br>
        &nbsp;&nbsp;&nbsp; 注意:
        可以用双引号括起内含空格的参数,
        如本例中的:&nbsp;&nbsp; &quot;&nbsp; argument <br>
        with blanks&quot;和&quot;Last but one&quot;)。 <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; </p>
        <p>函数名: matherr <br>
        功&nbsp; 能: 用户可修改的数学错误处理程序
        <br>
        用&nbsp; 法: int matherr(struct exception *e); <br>
        程序例: </p>
        <p>/* This is a user-defined matherr function that
        prevents <br>
        &nbsp;&nbsp; any error messages from being printed. */ </p>
        <p>#include&lt;math.h&gt; </p>
        <p>int matherr(struct exception *a) <br>
        { <br>
        &nbsp;&nbsp; return 1; <br>
        } <br>
        &nbsp; <br>
        &nbsp; <br>
        &nbsp; </p>
        <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>
        程序例: </p>
        <p>#include &lt;string.h&gt; <br>
        #include &lt;stdio.h&gt; </p>
        <p>int main(void) <br>
        { <br>
        &nbsp;&nbsp; char *src = &quot;This is the source
        string&quot;; <br>
        &nbsp;&nbsp; char dest[50]; <br>
        &nbsp;&nbsp; char *ptr; </p>
        <p>&nbsp;&nbsp; ptr = memccpy(dest, src, 'c',
        strlen(src)); </p>
        <p>&nbsp;&nbsp; if (ptr) <br>
        &nbsp;&nbsp; { <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *ptr = '\0'; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;The character
        was found:&nbsp; %s\n&quot;, dest); <br>
        &nbsp;&nbsp; } <br>
        &nbsp;&nbsp; else <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;The character
        wasn't found\n&quot;); <br>
        &nbsp;&nbsp; return 0; <br>
        } <br>
        &nbsp; <br>
        &nbsp; </p>
        <p>函数名: malloc <br>
        功&nbsp; 能: 内存分配函数 <br>
        用&nbsp; 法: void *malloc(unsigned size); <br>
        程序例: </p>
        <p>#include &lt;stdio.h&gt; <br>
        #include &lt;string.h&gt; <br>
        #include &lt;alloc.h&gt; <br>
        #include &lt;process.h&gt; </p>
        <p>int main(void) <br>
        { <br>
        &nbsp;&nbsp; char *str; </p>
        <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(&quot;Not enough
        memory to allocate buffer\n&quot;); <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);&nbsp; /*
        terminate program if out of memory */ <br>
        &nbsp;&nbsp; } </p>
        <p>&nbsp;&nbsp; /* copy &quot;Hello&quot; into string */ <br>
        &nbsp;&nbsp; strcpy(str, &quot;Hello&quot;); </p>
        <p>&nbsp;&nbsp; /* display string */ <br>
        &nbsp;&nbsp; printf(&quot;String is %s\n&quot;, str); </p>
        <p>&nbsp;&nbsp; /* free memory */ <br>
        &nbsp;&nbsp; free(str); </p>
        <p>&nbsp;&nbsp; return 0; <br>
        } <br>
        &nbsp; <br>
        &nbsp; <br>
        &nbsp; </p>
        <p>函数名: memchr <br>
        功&nbsp; 能: 在数组的前n个字节中搜索字符 <br>
        用&nbsp; 法: void *memchr(void *s, char ch, unsigned
        n); <br>
        程序例: </p>
        <p>#include &lt;string.h&gt; <br>
        #include &lt;stdio.h&gt; </p>
        <p>int main(void) <br>
        { <br>
        &nbsp;&nbsp; char str[17]; <br>
        &nbsp;&nbsp; char *ptr; </p>
        <p>&nbsp;&nbsp; strcpy(str, &quot;This is a
        string&quot;); <br>
        &nbsp;&nbsp; ptr = memchr(str, 'r', strlen(str)); <br>
        &nbsp;&nbsp; if (ptr) <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;The character
        'r' is at position: %d\n&quot;, ptr - str); <br>
        &nbsp;&nbsp; else <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;The character
        was not found\n&quot;); <br>
        &nbsp;&nbsp; return 0; <br>
        } <br>
        &nbsp; </p>
        <p>函数名: memcpy <br>
        功&nbsp; 能: 从源source中拷贝n个字节到目标destin中
        <br>
        用&nbsp; 法: void *memcpy(void *destin, void *source,
        unsigned n); <br>
        程序例: </p>
        <p>#include &lt;stdio.h&gt; <br>
        #include &lt;string.h&gt; <br>
        int main(void) <br>
        { <br>
        &nbsp;&nbsp; char src[] =
        &quot;******************************&quot;; <br>
        &nbsp;&nbsp; char dest[] =
        &quot;abcdefghijlkmnopqrstuvwxyz0123456709&quot;; <br>
        &nbsp;&nbsp; char *ptr; <br>
        &nbsp;&nbsp; printf(&quot;destination before memcpy:
        %s\n&quot;, dest); <br>
        &nbsp;&nbsp; ptr = memcpy(dest, src, strlen(src)); <br>
        &nbsp;&nbsp; if (ptr) <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;destination
        after memcpy:&nbsp; %s\n&quot;, dest); <br>
        &nbsp;&nbsp; else <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;memcpy
        failed\n&quot;); <br>
        &nbsp;&nbsp; return 0; <br>
        } <br>
        &nbsp; <br>
        &nbsp; </p>
        <p>函数名: memicmp <br>
        功&nbsp; 能: 比较两个串s1和s2的前n个字节,
        忽略大小写 <br>
        用&nbsp; 法: int memicmp(void *s1, void *s2, unsigned
        n); <br>
        程序例: </p>
        <p>#include &lt;stdio.h&gt; <br>
        #include &lt;string.h&gt; </p>
        <p>int main(void) <br>
        { <br>
        &nbsp;&nbsp; char *buf1 = &quot;ABCDE123&quot;; <br>
        &nbsp;&nbsp; char *buf2 = &quot;abcde456&quot;; <br>
        &nbsp;&nbsp; int stat; <br>
        &nbsp;&nbsp; stat = memicmp(buf1, buf2, 5); <br>
        &nbsp;&nbsp; printf(&quot;The strings to position 5 are
        &quot;); <br>
        &nbsp;&nbsp; if (stat) <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;not &quot;); <br>
        &nbsp;&nbsp; printf(&quot;the same\n&quot;); <br>
        &nbsp;&nbsp; return 0; <br>
        } <br>
        &nbsp; <br>
        &nbsp; </p>
        <p>函数名: memmove <br>
        功&nbsp; 能: 移动一块字节 <br>
        用&nbsp; 法: void *memmove(void *destin, void *source,
        unsigned n); <br>
        程序例: </p>
        <p>#include &lt;string.h&gt; <br>
        #include &lt;stdio.h&gt; </p>
        <p>int main(void) <br>
        { <br>
        &nbsp; char *dest =
        &quot;abcdefghijklmnopqrstuvwxyz0123456789&quot;; <br>
        &nbsp; char *src =
        &quot;******************************&quot;; <br>
        &nbsp; printf(&quot;destination prior to memmove:
        %s\n&quot;, dest); <br>
        &nbsp; memmove(dest, src, 26); <br>
        &nbsp; printf(&quot;destination after memmove:&nbsp;&nbsp;&nbsp;
        %s\n&quot;, dest); <br>
        &nbsp; return 0; <br>
        } <br>
        &nbsp; <br>
        &nbsp; <br>
        &nbsp; </p>
        <p>函数名: memset <br>
        功&nbsp; 能: 设置s中的所有字节为ch, s数组的大小由n给定
        <br>
        用&nbsp; 法: void *memset(void *s, char ch, unsigned
        n); <br>
        程序例: </p>
        <p>#include &lt;string.h&gt; <br>
        #include &lt;stdio.h&gt; <br>
        #include &lt;mem.h&gt; </p>
        <p>int main(void) <br>
        { <br>
        &nbsp;&nbsp; char buffer[] = &quot;Hello world\n&quot;; </p>
        <p>&nbsp;&nbsp; printf(&quot;Buffer before memset:
        %s\n&quot;, buffer); <br>
        &nbsp;&nbsp; memset(buffer, '*', strlen(buffer) - 1); <br>
        &nbsp;&nbsp; printf(&quot;Buffer after memset:&nbsp;
        %s\n&quot;, buffer); <br>

⌨️ 快捷键说明

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