C语言库函数大全及应用实例三

简介: [编程资料]C语言库函数大全及应用实例三 函数名: ecvt 功 能: 把一个浮点数转换为字符串 用 法: char ecvt(double value, int ndigit, int *decpt, int *sign); 程序例: #i nclude #i nclude #i nc...

函数名: ecvt
功 能: 把一个浮点数转换为字符串
用 法: char ecvt(double value, int ndigit, int *decpt, int *sign);
程序例: <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

#i nclude
#i nclude
#i nclude

int main(void)
{
char *string;
double value;
int dec, sign;
int ndig = 10;

clrscr();
value = 9.876;
string = ecvt(value, ndig, &dec, &sign);
printf("string = %s dec = %d \
sign = %d\n", string, dec, sign);

value = -123.45;
ndig= 15;
string = ecvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d sign = %d\n",
string, dec, sign);

value = 0.6789e5; /* scientific
notation */
ndig = 5;
string = ecvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d\
sign = %d\n", string, dec, sign);

return 0;
}

函数名: ellipse
功 能: 画一椭圆
用 法: void far ellipse(int x, int y, int stangle, int endangle,
int xradius, int yradius);
程序例:

#i nclude
#i nclude
#i nclude
#i nclude

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int stangle = 0, endangle = 360;
int xradius = 100, yradius = 50;

/* initialize graphics, local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk)
/* an error occurred */
{
printf("Graphics error: %s\n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
/* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());

/* draw ellipse */
ellipse(midx, midy, stangle, endangle,
xradius, yradius);

/* clean up */
getch();
closegraph();
return 0;
}

函数名: enable
功 能: 开放硬件中断
用 法: void enable(void);
程序例:

/* ** NOTE:
This is an interrupt service routine. You can NOT compile this program
with Test Stack Overflow turned on and get an executable file which will
operate correctly.
*/

#i nclude
#i nclude
#i nclude

/* The clock tick interrupt */
#define INTR 0X1C

void interrupt ( *oldhandler)(void);

int count=0;

void interrupt handler(void)
{
/*
disable interrupts during the handling of the interrupt
*/
disable();
/* increase the global counter */
count++;
/*
re enable interrupts at the end of the handler
*/
enable();
/* call the old routine */
oldhandler();
}

int main(void)
{
/* save the old interrupt vector */
oldhandler = getvect(INTR);

/* install the new interrupt handler */
setvect(INTR, handler);

/* loop until the counter exceeds 20 */
while (count < 20)
printf("count is %d\n",count);

/* reset the old interrupt handler */
setvect(INTR, oldhandler);

return 0;
}

函数名: eof
功 能: 检测文件结束
用 法: int eof(int *handle);
程序例:

#i nclude
#i nclude
#i nclude
#i nclude
#i nclude

int main(void)
{
int handle;
char msg[] = "This is a test";
char ch;

/* create a file */
handle = open("DUMMY.FIL",
O_CREAT | O_RDWR,
S_IREAD | S_IWRITE);

/* write some data to the file */
write(handle, msg, strlen(msg));

/* seek to the beginning of the file */
lseek(handle, 0L, SEEK_SET);

/*
reads chars from the file until hit EOF
*/
do
{
read(handle, &ch, 1);
printf("%c", ch);
} while (!eof(handle));

close(handle);
return 0;
}

函数名: exec...
功 能: 装入并运行其它程序的函数
用 法: int execl(char *pathname, char *arg0, arg1, ..., argn, NULL);
int execle(char *pathname, char *arg0, arg1, ..., argn, NULL,
char *envp[]);
int execlp(char *pathname, char *arg0, arg1, .., NULL);
int execple(char *pathname, char *arg0, arg1, ..., NULL,
char *envp[]);
int execv(char *pathname, char *argv[]);
int execve(char *pathname, char *argv[], char *envp[]);
int execvp(char *pathname, char *argv[]);
int execvpe(char *pathname, char *argv[], char *envp[]);
程序例:

/* execv example */
#i nclude
#i nclude
#i nclude

void main(int argc, char *argv[])
{
int i;

printf("Command line arguments:\n");
for (i=0; i
printf("[%2d] : %s\n", i, argv[i]);

printf("About to exec child with arg1 arg2 ...\n");
execv("CHILD.EXE", argv);

perror("exec error");

exit(1);
}

函数名: exit
功 能: 终止程序
用 法: void exit(int status);
程序例:

#i nclude
#i nclude
#i nclude

int main(void)
{
int status;

printf("Enter either 1 or 2\n");
status = getch();
/* Sets DOS errorlevel */
exit(status - '0');

/* Note: this line is never reached */
return 0;
}

函数名: exp
功 能: 指数函数
用 法: double exp(double x);
程序例:

#i nclude
#i nclude

int main(void)
{
double result;
double x = 4.0;

result = exp(x);
printf("'e' raised to the power \
of %lf (e ^ %lf) = %lf\n",
x, x, result);

return 0;
}

double fabs(double x);

返回双精度x的绝对值。


void far *farcalloc(unsigned long nunits,unsigned long unitsz);

堆中给含有nu从远nits个元素的,每个元素占用unitsz个字节长的数组分配存贮区。
成功是返回指向新分配的内存块的指针;若存贮空间不够,返回NULL。

 

unsigned long farcoreleft(void);

返回远堆中未用存贮区的大小。


void farfree(void far *block);

释放远堆中以前所分配内存块。


void far *farmalloc(unsigned long nbytes);

从远堆分配长nbytes字节的内存块,返回新地址。


void far *farrealloc(void far *oldblock,unsigned long nbytes);

调整已分配的内存块的大小为nbytes。需要的话,可把块中的内容复制到新位置。要注意:所有的可用的RAM可被分配,大于64K的块可被分配。
远指针用于存取被分配的块。返回重新分配的内存块的地址。若存贮块重新分配失败,返回NULL。

struct fcb {

char fcb_drive; /* 0 = default, 1 = A, 2 = B */

char fcb_name[8]; /* File name */

char fcb_ext[3]; /* File extension */

short fcb_curblk; /* Current block number */

short fcb_recsize; /* Logical record size in bytes */

long fcb_filsize; /* File size in bytes */

short fcb_date; /* Date file was last written */

char fcb_resv[10]; /* Reserved for DOS */

char fcb_currec; /* Current record in block */

long fcb_random; /* Random record number */

};

 

int fclose(FILE *stream);

关闭一个流。

成功返回0;失败是返回EOF。

int fcloseall(void);

关闭所有打开的流,除了stdin,stdout,stdprn,stderr和stdaux。

 

char *fcvt(double value,int ndig,int *dec,int *sign);

把浮点数转换成字符串,把浮点数value转换成长度为ndig的以空字符终结的字符串,返回一个指向这个字符串的指针,相对于串的开始处,
小数点的位置,由dec间接存贮,dec若为负值,表示小数点在返回的字符串的左边。返回的字符串本身不带小数点。如果value的符号为负,由sign指向的值非零;否则它是零。

 

FILE *fdopen(int handle,char *type);

把流与一个文件描述字相联系地打开。fdopen使流stream与一个从creat,dup,dup2或open得到的文件描述字相联系。流的类型type必须与打开文件描述字handle的模式相匹配。

类型字符串type可以是下列值之一:

r,打开用于只读;

w,创建用于写;

a,打开用于写在原有内容后面,文件不存在时创建用于写;

r+,打开已存在的文件用于更新(读和写);

a+,添加打开,文件不存在时创建,在末尾更新。成功时返回新打开的流。出错时返回NULL。

 

int feof(FILE *stream);

测试所给stream的文件尾标记的宏。

若检测到文件尾标记EOF或Ctrl-z返回非零值;否则,返回0。


#i nclude

int ferror(FILE *stream);

测试给定流读写错误的宏。

若检测到给定流上的错误返回非0值。

struct ffblk {

char ff_reserved[21];

char ff_attrib;

unsigned ff_ftime;

unsigned ff_fdate;

long ff_fsize;

char ff_name[13];

};

 

int fflush(FILE *stream);

清除输入流的缓冲区,使它仍然打开,并把输出流的缓冲区的内容写入它所联系的文件中。成功时返回0,出错时返回EOF。

 

int fgetc(FILE *stream);

从流中读取下一个字符。

成功是返回输入流中的下一个字符;至文件结束或出错时返回EOF。


int fgetchar(void);

从标准输入流中读取字符,时定义为getc(stdin)的宏。
返回输入流stdin中的下一个字符,它已被转换成为无符号扩展的整形值。遇到出错或文件结束时返回EOF。

int fgetpos(FILE stream,fpos_t *pos);

取得当前文件指针。

fgetpos把与stream相联系的文件指针的位置保存在pos所指的地方。

其中,类型fpos_t在stdio.h中定义为

typeddf long fpos_t;

成功时返回0;失败时,返回非0值。

 

char *fgets(char *s,int n,FILE *stream);

成行读。

从流stream读n-1个字符,或遇换行符'\n'为止,把读出的内容,存入s中。与gets不同,fgets在s未尾保留换行符。一个空字节被加入到s,用来标记串的结束。
成功时返回s所指的字符串;在出错或遇到文件结束时返回NULL。

 

long filelength(int handle);

返回与handle相联系的文件长度的字节数,出错时返回-1L。

 

int fileno(FILE *stream);

返回与stream相联系的文件描述字

 

int fileno(FILE *stream);

返回与stream相联系的文件描述字。


enum fill_patterns { /* Fill patterns for get/setfillstyle */

0 EMPTY_FILL, /* fills area in background color */

1 SOLID_FILL, /* fills area in solid fill color */

2 LINE_FILL, /* --- fill */

3 LTSLASH_FILL, /* /// fill */

4 SLASH_FILL, /* /// fill with thick lines */

5 BKSLASH_FILL, /* \\\ fill with thick lines */

6 LTBKSLASH_FILL, /* \\\ fill */

7 HATCH_FILL, /* light hatch fill */

8 XHATCH_FILL, /* heavy cross hatch fill */

9 INTERLEAVE_FILL, /* interleaving line fill */

10 WIDE_DOT_FILL, /* Widely spaced dot fill */

11 CLOSE_DOT_FILL, /* Closely spaced dot fill */

12 USER_FILL /* user defined fill */

 

void far fillellipse(int x,int y,int xradius,int yradius);

画一填充椭圆。
以(x,y)为中心,以xradius和yradius为水平和垂直半轴,用当前颜色画边线,画一椭圆,用当前填充颜色和填充方式填充。

 

int findfirst(const char *pathname,struct ffblk *ffblk,int attrib);

搜索磁盘目录。开始通过DOS系统调用0x4E对磁盘目录进行搜索。pathname中可含有要找的盘区路径文件名。
文件名中可含有通配符(如*或?)。如果找到了匹配的文件,把文件目录信息填入ffblk结构。

attrib是MS-DOS的文件属性字节,用于在搜索过程中选择符合条件的文件。
attrib可以是在dos.h中定义的下列可取值之一:FA_RDONLY,只读;FA_HIDDEN隐藏;FA_SYSTEM系统文件;FA_LABEL卷标;FA_DIREC,目录;FA_ARCH,档案.可参考>.

结构ffblk的格式如下:

struct ffblk{

char ff_reserved[21}; /*由DOS保留*/

char ff_attrib; /*属性查找*/

int ff_ftime; /*文件时间*/

int f_fdate; /*文件日期*/

long ff_fsize; /*文件大小*/

char ff_name[13}; /*找到的文件名*/

在成功的地找到了与搜索路径pathname相匹配的文件名后返回0;否则返回-1。

 

int findnext(xtruct ffblk *ffblk);继续按findfirst的pathname搜索磁盘目录。

成功地找到了与搜索路径pathname相匹配的后续文件名后返回0;否则返回-1。

 

void far floodfill(int x,int y, int border);

填充一个有界的区域。

 

double floor(double x);

返回〈=x的用双精度浮点数表示的最大整数。


int flushall(void);

清除所有缓冲区。

清除所有与打开输入流相联系的缓冲区,并把所有和打开输出流相联系的缓冲区的内容写入到各自的文件中,跟在flushall后面的读操作,从输入文件中读新数据到缓冲区中。
返回一个表示打开输入流和输出流总数的整数。

目录
相关文章
|
14天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
34 10
|
14天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
34 9
|
14天前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
35 6
|
14天前
|
存储 C语言
【C语言】输入/输出函数详解
在C语言中,输入/输出操作是通过标准库函数来实现的。这些函数分为两类:标准输入输出函数和文件输入输出函数。
87 6
|
14天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
45 6
|
2月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
37 3
|
14天前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
29 8
|
14天前
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
23 5
|
25天前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
44 4
|
1月前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
31 6