总览
函数声明
函数功能
char ecvt(double value, int ndigit, int *decpt, int *sign);
把一个双精度浮点型数转换为字符串,转换结果中不包括十进制小数点
void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius);
画一段椭圆线
int eof(int *handle);
检测文件结束
int execl(const char *pathname, const char *arg0, ... const char *argn, NULL);
载入并运行其它程序
int execlp(char *pathname, char *arg0, ... const char *argn, NULL);
载入并运行其它程序
int execlpe(const char *pathname, const char *arg0, ... const char *argn, NULL, const char *const *envp);
载入并运行其它程序
int execv(const char *pathname, char *const *argv);
载入并运行其它程序
int execve(const char *pathname, char *const argv[], char *const envp[]);
载入并运行其它程序
int execvp(const char *pathname, char *const argv[]);
载入并运行其它程序
int execvpe(const char *pathname, char *const argv[], char *const envp[]);
载入并运行其它程序
void exit(int status);
终止程序
double exp(double x);
计算 x 的基数e指数(double)
float expf(float x);
计算 x 的基数e指数(float)
long double expl(long double x);
计算 x 的基数e指数(long double)
double exp2(double x);
计算 x 的基数为2的指数(double)
float exp2f(float x);
计算 x 的基数为2的指数(float)
long double exp2l(long double x);
计算 x 的基数为2的指数(long double)
double expm1 (double x);
计算 e 的 x 次方 减 1,即 (e^x) - 1 (double)
float expm1f (float x);
计算 e 的 x 次方 减 1,即 (e^x) - 1 (float)
long double expm1l (long double x);
计算 e 的 x 次方 减 1,即 (e^x) - 1 (long double)
double erf (double x);
计算 x 的 误差函数 (double)
float erff (float x);
计算 x 的 误差函数 (float)
long double erfl (long double x);
计算 x 的 误差函数 (long double)
double erfc (double x);
计算 x 的互补误差函数(double)
float erfcf (float x);
计算 x 的互补误差函数(float)
long double erfcl (long double x);
计算 x 的互补误差函数(long double)
1. ecvt 1.1 函数说明
函数声明
函数功能
char ecvt(double value, int ndigit, int *decpt, int *sign);
把一个双精度浮点型数转换为字符串,转换结果中不包括十进制小数点
value : 待转换的双精度浮点数。
ndigit :存储的有效数字位数。这个函数存储最多 ndigit 个数字值作为一个字符串,并添加一个结束符(‘\0’ ),如果 value 中的数字个数超过 ndigit ,低位数字被舍入。如果少于 ndigit 个数字,该字符串用 0 填充。
decpt :指出给出小数点位置的整数值, 它是从该字符串的开头位置计算的。0 或负数指出小数点在第一个数字的左边。
sign :指出一个指出转换的数的符号的整数。如果该整数为 0 ,这个数为正数,否则为负数。
1.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <stdlib.h> #include <stdio.h> #include <conio.h> int main () { char *string ; double value; int decpt, sign; int ndigit = 10 ; value = 9.876 ; string = ecvt(value, ndigit, &decpt, &sign); printf ("string = %-16s decpt = %d sign = %d value = %lf\n" , string , decpt, sign, value); value = -123.45 ; ndigit= 15 ; string = ecvt(value, ndigit, &decpt, &sign); printf ("string = %-16s decpt = %d sign = %d value = %lf\n" , string , decpt, sign, value); value = 0.6789e5 ; ndigit = 5 ; string = ecvt(value, ndigit, &decpt, &sign); printf ("string = %-16s decpt = %d sign = %d value = %lf\n" , string , decpt, sign, value); return 0 ; }
1.3 运行结果
2. ellipse 2.1 函数说明
函数声明
函数功能
void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius);
画一段椭圆线
以 (x, y) 为中心,xradius 、yradius 为 x 轴 和 y 轴 半径,从角 stangle 开始,endangle 结束,画一段椭圆线。当stangle=0,endangle=360 时,画出一个完整的椭圆
2.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include <graphics.h> #include <stdlib.h> #include <stdio.h> int main (void ) { int gdriver = DETECT, gmode, errorcode; int midx, midy; int stangle = 0 , endangle = 360 , midangle = 180 ; int xradius = 100 , yradius = 50 ; initgraph(&gdriver, &gmode, "" ); errorcode = graphresult(); if (errorcode != grOk) { printf ("Graphics error: %s\n" , grapherrormsg(errorcode)); printf ("Press any key to halt:" ); getch(); exit (1 ); } midx = getmaxx() / 2 ; midy = getmaxy() / 2 ; setcolor(getmaxcolor()); ellipse(midx, 50 , midangle, endangle, xradius, yradius); ellipse(midx, midy, stangle, endangle, xradius, yradius); ellipse(midx, getmaxy() - 50 , stangle, midangle, xradius, yradius); getch(); closegraph(); return 0 ; }
2.3 运行结果
3. eof 3.1 函数说明
函数声明
函数功能
int eof(int *handle);
检测文件结束
3.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include <sys\stat.h> #include <string.h> #include <stdio.h> #include <fcntl.h> #include <io.h> int main (void ) { int handle; char msg[] = "This is a test" ; char ch; handle = open("STU.FIL" , O_CREAT | O_RDWR, S_IREAD | S_IWRITE); write(handle, msg, strlen (msg)); lseek(handle, 0L , SEEK_SET); do { read(handle, &ch, 1 ); printf ("%c" , ch); } while (!eof(handle)); close(handle); return 0 ; }
3.3 运行结果
4. execl 4.1 函数说明
函数声明
函数功能
int execl(const char *pathname, const char *arg0, ... const char *argn, NULL);
载入并运行其它程序
注意: execl 函数,其后缀 l
代表 list ,也就是参数列表的意思。第一个参数 path 字符指针指向要执行的文件路径, 接下来的参数代表执行该文件时传递的参数列表:argv[0],argv[1]...
,最后一个参数须用空指针 NULL 作结束。
4.2 演示示例 4.2.1 SubTest.c 1 2 3 4 5 6 #include <stdio.h> int main (int argc, char *argv[]) { printf ("exec %s, Hello, %s" , argv[0 ], argv[1 ]); return 0 ; }
4.2.2 Test.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <process.h> #include <stdio.h> #include <errno.h> void main (int argc, char *argv[]) { int i; printf ("Command line arguments:\n" ); for (i=0 ; i<argc; i++) printf ("[%d] : %s\n" , i, argv[i]); printf ("exec SubTest with subargv ...\n" ); int result = execl("SubTest.exe" , argv[0 ], "Huazie" , NULL ); printf ("result = %d\n" , result); perror("exec error" ); exit (1 ); }
4.3 运行结果 执行失败: 执行成功:
5. execle 5.1 函数说明
函数声明
函数功能
int execle(const char *pathname, const char *arg0, ... const char *argn, NULL, const char *const *envp);
载入并运行其它程序
注意: execl 函数是用来执行参数 path 字符串所代表的文件路径。接下来的参数代表执行该文件时传递过去的 argv[0], argv[1]…
,并且倒数第二个参数必须用空指针 NULL 作结束,最后一个参数为 环境变量 。
5.2 演示示例 5.2.1 SubEnvTest.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <process.h> #include <processenv.h> #include <stdio.h> int main (int argc, char *argv[], char **envp) { printf ("SubEnvTest Command line arguments:\n" ); for (int i=0 ; i<argc; i++) printf ("[%d] : %s\n" , i, argv[i]); printf ("exec %s, Hello, %s\n" , argv[0 ], argv[1 ]); for (int i = 0 ; envp[i] != NULL ; i++) { printf ("%s\n" , envp[i]); } return 0 ; }
5.2.2 Test.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <process.h> #include <stdio.h> #include <errno.h> void main (int argc, char *argv[]) { int i; printf ("Command line arguments:\n" ); for (i=0 ; i<argc; i++) printf ("[%d] : %s\n" , i, argv[i]); printf ("exec SubEnvTest with subargv ...\n" ); const char *envp[] = {"AUTHOR=Huazie" , "DATE=2023-03-28" , NULL }; int result = execle("SubEnvTest.exe" , argv[0 ], "Huazie" , NULL , envp); printf ("result = %d\n" , result); perror("exec error" ); exit (1 ); }
5.3 运行结果
6. execlp 6.1 函数说明
函数声明
函数功能
int execlp(char *pathname, char *arg0, ... const char *argn, NULL);
载入并运行其它程序
注意: execlp 函数会从 PATH 环境变量所指的目录中查找符合参数 pathname 的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的arg0, arg1, …
,最后一个参数必须用 空指针 NULL 作结束。
6.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <process.h> #include <stdio.h> #include <errno.h> void main (int argc, char *argv[]) { int i; printf ("Command line arguments:\n" ); for (i=0 ; i<argc; i++) printf ("[%d] : %s\n" , i, argv[i]); printf ("exec java with subargv ...\n" ); int result = execlp("java.exe" , "java" , "-version" , NULL ); printf ("result = %d\n" , result); perror("exec error" ); exit (1 ); }
6.3 运行结果
7. execlpe 7.1 函数说明
函数声明
函数功能
int execlpe(const char *pathname, const char *arg0, ... const char *argn, NULL, const char *const *envp);
载入并运行其它程序
注意: execlp 函数会从 PATH 环境变量所指的目录中查找符合参数 pathname 的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的arg0, arg1, …
,其中倒数第二个参数必须用 空指针 NULL 作结束,最后一个参数为 环境变量 。
7.2 演示示例 7.2.1 SubEnvTest.c 参考 5.2.1 的 SubEnvTest.c
7.2.2 Test.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <process.h> #include <stdio.h> #include <errno.h> void main (int argc, char *argv[]) { int i; printf ("Command line arguments:\n" ); for (i=0 ; i<argc; i++) printf ("[%d] : %s\n" , i, argv[i]); printf ("exec SubEnvTest with subargv ...\n" ); const char *envp[] = {"AUTHOR=Huazie" , "DATE=2023-03-28" , NULL }; int result = execlpe("SubEnvTest" , argv[0 ], "Huazie" , NULL , envp); printf ("result = %d\n" , result); perror("exec error" ); exit (1 ); }
7.3 运行结果
8. execv 8.1 函数说明
函数声明
函数功能
int execv(const char *pathname, char *const *argv);
载入并运行其它程序
注意:execv 函数用来运行參数 pathname 字符串所指向的程序,第二个参数 argv 为參数列表【该数组的最后一个元素必须是空指针 NULL 】。
8.2 演示示例 8.2.1 SubTest.c 参考 4.2.1 的 SubTest.c
8.2.2 Test.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <process.h> #include <stdio.h> #include <errno.h> void main (int argc, char *argv[]) { int i; printf ("Command line arguments:\n" ); for (i=0 ; i<argc; i++) printf ("[%d] : %s\n" , i, argv[i]); printf ("exec SubTest with subargv ...\n" ); char *const subargv[] = {argv[0 ], "Huazie" , NULL }; int result = execv("SubTest.exe" , subargv); printf ("result = %d\n" , result); perror("exec error" ); exit (1 ); }
8.3 运行结果
9. execve 9.1 函数说明
函数声明
函数功能
int execve(const char *pathname, char *const argv[], char *const envp[]);
载入并运行其它程序
注意:execve 函数用来运行參数 pathname 字符串所指向的程序,第二个参数 argv 为參数列表【该数组的最后一个元素必须是空指针 NULL 】,最后一个参数为 环境变量 。
9.2 演示示例 9.2.1 SubEnvTest.c 参考 5.2.1 的 SubEnvTest.c
9.2.2 Test.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <process.h> #include <stdio.h> #include <errno.h> void main (int argc, char *argv[]) { int i; printf ("Command line arguments:\n" ); for (i=0 ; i<argc; i++) printf ("[%d] : %s\n" , i, argv[i]); printf ("exec SubEnvTest with subargv ...\n" ); char *const subargv[] = {argv[0 ], "Huazie" , NULL }; char *const envp[] = {"AUTHOR=Huazie" , "DATE=2023-03-28" , NULL }; int result = execve("SubEnvTest.exe" , subargv, envp); printf ("result = %d\n" , result); perror("exec error" ); exit (1 ); }
9.3 运行结果
10. execvp 10.1 函数说明
函数声明
函数功能
int execvp(const char *pathname, char *const argv[]);
载入并运行其它程序
注意:execvp 函会从 PATH 环境变量所指的目录中查找符合参数 pathname 的文件名,找到后便执行该文件,第二个参数 argv 为參数列表【该数组的最后一个元素必须是空指针 NULL 】。
10.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <process.h> #include <stdio.h> #include <errno.h> void main (int argc, char *argv[]) { int i; printf ("Command line arguments:\n" ); for (i=0 ; i<argc; i++) printf ("[%d] : %s\n" , i, argv[i]); printf ("exec java with subargv ...\n" ); char *const subargv[] = {"java" , "-version" , NULL }; int result = execvp("java.exe" , subargv); printf ("result = %d\n" , result); perror("exec error" ); exit (1 ); }
10.3 运行结果
11. execvpe 11.1 函数说明
函数声明
函数功能
int execvpe(const char *pathname, char *const argv[], char *const envp[]);
载入并运行其它程序
注意:execvpe 函会从 PATH 环境变量所指的目录中查找符合参数 pathname 的文件名,找到后便执行该文件,第二个参数 argv 为參数列表【该数组的最后一个元素必须是空指针 NULL 】,最后一个参数为 环境变量 。
11.2 演示示例 11.2.1 SubEnvTest.c 参考 5.2.1 的 SubEnvTest.c
11.2.2 Test.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <process.h> #include <stdio.h> #include <errno.h> void main (int argc, char *argv[]) { int i; printf ("Command line arguments:\n" ); for (i=0 ; i<argc; i++) printf ("[%d] : %s\n" , i, argv[i]); printf ("exec SubEnvTest with subargv ...\n" ); char *const subargv[] = {argv[0 ], "Huazie" , NULL }; char *const envp[] = {"AUTHOR=Huazie" , "DATE=2023-03-28" , NULL }; int result = execvpe("SubEnvTest.exe" , subargv, envp); printf ("result = %d\n" , result); perror("exec error" ); exit (1 ); }
11.3 运行结果
12. exit 12.1 函数说明
函数声明
函数功能
void exit(int status);
终止程序
注意: exit 函数通常是用来终结程序用的,使用后程序自动结束,跳回操作系统。exit(0)
表示程序正常退出【相当于主函数 return 0;
】,exit⑴
表示程序异常退出【相当于主函数 return 1;
】。
12.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <stdlib.h> #include <stdio.h> int main (void ) { int status; printf ("Enter either 1 or 2\n" ); status = getchar(); exit (status - '0' ); printf ("this line is never reached!" ); return 0 ; }
12.3 运行结果
13. exp,expf,expl 13.1 函数说明
函数声明
函数功能
double exp(double x);
计算 x 的基数e指数(double)
float expf(float x);
计算 x 的基数e指数(float)
long double expl(long double x);
计算 x 的基数e指数(long double)
13.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <stdio.h> #include <math.h> int main (void ) { double result, x = 4.0 ; result = exp (x); float resultf, xf = 4.0 ; resultf = expf(xf); long double resultL, xL = 4.0 ; resultL = expl(xL); printf ("\n'e' raised to the power of %lf (e ^ %lf) = %.20lf\n" , x, x, result); printf ("\n'e' raised to the power of %f (e ^ %f) = %.20f\n" , xf, xf, resultf); printf ("\n'e' raised to the power of %Lf (e ^ %Lf) = %.20Lf\n" , xL, xL, resultL); return 0 ; }
13.3 运行结果
14. exp2,exp2f,exp2l 14.1 函数说明
函数声明
函数功能
double exp2(double x);
计算 x 的基数为2的指数(double)
float exp2f(float x);
计算 x 的基数为2的指数(float)
long double exp2l(long double x);
计算 x 的基数为2的指数(long double)
14.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <stdio.h> #include <math.h> int main (void ) { double result, x = 4.5 ; result = exp2(x); float resultf, xf = 4.5 ; resultf = exp2f(xf); long double resultL, xL = 4.5 ; resultL = exp2l(xL); printf ("\n'2' raised to the power of %lf (2 ^ %lf) = %.20lf\n" , x, x, result); printf ("\n'2' raised to the power of %f (2 ^ %f) = %.20f\n" , xf, xf, resultf); printf ("\n'2' raised to the power of %Lf (2 ^ %Lf) = %.20Lf\n" , xL, xL, resultL); return 0 ; }
14.3 运行结果
15. expm1,expm1f,expm1l 15.1 函数说明
函数声明
函数功能
double expm1 (double x);
计算 e 的 x 次方 减 1,即 (e^x) - 1 (double)
float expm1f (float x);
计算 e 的 x 次方 减 1,即 (e^x) - 1 (float)
long double expm1l (long double x);
计算 e 的 x 次方 减 1,即 (e^x) - 1 (long double)
15.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include <stdio.h> #include <math.h> int main (void ) { double result, result1, x = 4.0 ; result = exp (x); result1 = expm1(x); float resultf, resultf1, xf = 4.0 ; resultf = expf(xf); resultf1 = expm1f(xf); long double resultL, resultL1, xL = 4.0 ; resultL = expl(xL); resultL1 = expm1l(xL); printf ("\n'e' raised to the power of %lf (e ^ %lf) = %.20lf\n" , x, x, result); printf ("\n'e' raised to the power of %lf minus one (e ^ %lf - 1) = %.20lf\n" , x, x, result1); printf ("\n'e' raised to the power of %f (e ^ %f) = %.20f\n" , xf, xf, resultf); printf ("\n'e' raised to the power of %f minus one (e ^ %f - 1) = %.20f\n" , xf, xf, resultf1); printf ("\n'e' raised to the power of %Lf (e ^ %Lf) = %.20Lf\n" , xL, xL, resultL); printf ("\n'e' raised to the power of %Lf minus one (e ^ %Lf - 1) = %.20Lf\n" , xL, xL, resultL1); return 0 ; }
15.3 运行结果
16. erf,erff,erfl 16.1 函数说明
函数声明
函数功能
double erf (double x);
计算 x 的 误差函数 (double)
float erff (float x);
计算 x 的 误差函数 (float)
long double erfl (long double x);
计算 x 的 误差函数 (long double)
16.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <stdio.h> #include <math.h> int main (void ) { double result, x = 2.0 ; result = erf(x); float resultf, xf = 2.0 ; resultf = erff(xf); long double resultL, xL = 2.0 ; resultL = erfl(xL); printf ("the error function of %lf = %.20lf\n" , x, result); printf ("the error function of %f = %.20f\n" , xf, resultf); printf ("the error function of %Lf = %.20Lf\n" , xL, resultL); return 0 ; }
16.3 运行结果
17. erfc,erfcf,erfcl 17.1 函数说明
函数声明
函数功能
double erfc (double x);
计算 x 的互补误差函数(double)
float erfcf (float x);
计算 x 的互补误差函数(float)
long double erfcl (long double x);
计算 x 的互补误差函数(long double)
17.2 演示示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <stdio.h> #include <math.h> int main (void ) { double result, x = 2.0 ; result = erfc(x); float resultf, xf = 2.0 ; resultf = erfcf(xf); long double resultL, xL = 2.0 ; resultL = erfcl(xL); printf ("the complementary error function of %lf = %.20lf\n" , x, result); printf ("the complementary error function of %f = %.20f\n" , xf, resultf); printf ("the complementary error function of %Lf = %.20Lf\n" , xL, resultL); return 0 ; }
17.3 运行结果
参考
[API Reference Document]
[ecvt 函数]
[exec函数]