C语言函数大全--b开头的函数

简介: 【6月更文挑战第2天】本篇介绍 C语言中 b开头的函数【C语言函数大全】

image.png

总览

函数声明 函数功能
void bar(int left, int top, int right, int bottom); 画一个二维条形图
void bar3d(int left, int top, int right, int bottom, int depth, int topflag); 画一个三维条形图
int bdos(int dosfun, unsigned dosdx, unsigned dosal); DOS系统调用
int bdosptr(int dosfun, void *argument, unsigned dosal); DOS系统调用
int bioscom(int cmd, char abyte, int port); 串行I/O通信
int biosdisk(int cmd, int drive, int head, int track, int sector, int nsects, void *buffer); 软硬盘I/O
int bioskey(int cmd); 直接使用BIOS服务的键盘接口
int biosmemory(void); 返回存储块大小,以K为单位
int biosprint(int cmd, int byte, int port); 直接使用BIOS服务的打印机I/O
long biostime(int cmd, long newtime); 读取或设置BIOS时间
int brk(void *endds); 用来改变分配给调用程序的数据段的空间数量
void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *)); 二分法搜索

1. bar

1.1 函数说明

函数声明 函数功能
void bar(int left, int top, int right, int bottom); 画一个二维条形图

关注点: 绘制二维条形图需要左上角和右下角的坐标。 left 指定左上角的 X 坐标,top 指定左上角的 Y 坐标,right 指定右下角的 X 坐标,bottom 指定右下角的 Y 坐标。 当前填充图案和填充颜色用于填充条形图。 要更改填充图案和填充颜色,请使用 setfillstyle

1.2 演示示例

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
   
   
    /* request auto detection */
    int gdriver = DETECT, gmode, errorcode;
    int midx, midy, i;

    /* initialize graphics and 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;

    /* loop through the fill patterns */
    for (i=SOLID_FILL; i<USER_FILL; i++)
    {
   
   
        /* set the fill style */
        setfillstyle(i, getmaxcolor());

        /* draw the bar */
        bar(midx-50, midy-50, midx+50, midy+50);

        getch();
    }

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

1.3 运行结果

image.png

2. bar3d

2.1 函数说明

函数声明 函数功能
void bar3d(int left, int top, int right, int bottom, int depth, int topflag); 画一个三维条形图

关注点: 绘制三维条形图需要条形左上角和右下角的坐标。 left 指定左上角的 X 坐标,top 指定左上角的 Y 坐标,right 指定右下角的 X 坐标,bottom 指定右下角的 Y 坐标,depth 指定条的深度 以像素为单位,topflag 确定是否将 3 维顶部放置在条形图上(如果它不为零,则放置否则不放置)。 当前填充图案和填充颜色用于填充条形图。 要更改填充图案和填充颜色,请使用 setfillstyle

2.2 演示示例

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
   
   
    /* request auto detection */
    int gdriver = DETECT, gmode, errorcode;
    int midx, midy, i;

    /* 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 error code */
    }

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

    /* loop through the fill patterns */
    for (i=EMPTY_FILL; i<USER_FILL; i++)
    {
   
   
        /* set the fill style */
        setfillstyle(i, getmaxcolor());

        /* draw the 3-d bar */
        bar3d(midx-50, midy-50, midx+50, midy+50, 10, 1);

        getch();
    }

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

2.3 运行结果

image.png

3. bdos

3.1 函数说明

函数声明 函数功能
int bdos(int dosfun, unsigned dosdx, unsigned dosal); DOS系统调用

3.2 演示示例

#include <stdio.h>
#include <dos.h>

/* Get current drive as 'A', 'B', ... */
char current_drive(void)
{
   
   
    char curdrive;

    /* Get current disk as 0, 1, ... */
    curdrive = bdos(0x19, 0, 0);
    return('A' + curdrive);
}

int main(void)
{
   
   
    printf("The current drive is %c:\n", current_drive());
    return 0;
}

4. bdosptr

4.1 函数说明

函数声明 函数功能
int bdosptr(int dosfun, void *argument, unsigned dosal); DOS系统调用

4.2 演示示例

#include <string.h>
#include <stdio.h>
#include <dir.h>
#include <dos.h>
#include <errno.h>
#include <stdlib.h>

#define  BUFLEN  80

int main(void)
{
   
   
    char  buffer[BUFLEN];
    int   test;

    printf("Enter full pathname of a directory\n");
    gets(buffer);

    test = bdosptr(0x3B,buffer,0);
    if(test)
    {
   
   
        printf("DOS error message: %d\n", errno);
        /* See errno.h for error listings */
        exit (1);
    }

    getcwd(buffer, BUFLEN);
    printf("The current directory is: %s\n", buffer);

    return 0;
}

5. bioscom

5.1 函数说明

函数声明 函数功能
int bioscom(int cmd, char abyte, int port); 串行I/O通信

5.2 演示示例

#include <bios.h>
#include <conio.h>

#define COM1       0
#define DATA_READY 0x100
#define TRUE       1
#define FALSE      0

#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)

int main(void)
{
   
   
    int in, out, status, DONE = FALSE;

    bioscom(0, SETTINGS, COM1);
    cprintf("... BIOSCOM [ESC] to exit ...\n");
    while (!DONE)
    {
   
   
        status = bioscom(3, 0, COM1);
        if (status & DATA_READY)
            if ((out = bioscom(2, 0, COM1) & 0x7F) != 0)
                putch(out);
        if (kbhit())
        {
   
   
            if ((in = getch()) == '\x1B')
                DONE = TRUE;
            bioscom(1, in, COM1);
        }
    }
    return 0;
}

6. biosdisk

6.1 函数说明

函数声明 函数功能
int biosdisk(int cmd, int drive, int head, int track, int sector, int nsects, void *buffer); 软硬盘I/O

6.2 演示示例

#include <bios.h>
#include <stdio.h>

int main(void)
{
   
   
    int result;
    char buffer[512];

    printf("Testing to see if drive a: is ready\n");
    result = biosdisk(4,0,0,0,0,1,buffer);
    result &= 0x02;
    (result) ? (printf("Drive A: Ready\n")) : (printf("Drive A: Not Ready\n"));

    return 0;
}

7. bioskey

7.1 函数说明

函数声明 函数功能
int bioskey(int cmd); 直接使用BIOS服务的键盘接口

7.2 演示示例

#include <stdio.h>
#include <bios.h>
#include <ctype.h>

#define RIGHT  0x01
#define LEFT   0x02
#define CTRL   0x04
#define ALT    0x08

int main(void)
{
   
   
    int key, modifiers;

    /* function 1 returns 0 until a key is pressed */
    while (bioskey(1) == 0);

    /* function 0 returns the key that is waiting */
    key = bioskey(0);

    /* use function 2 to determine if shift keys were used */
    modifiers = bioskey(2);
    if (modifiers)
    {
   
   
        printf("[");
        if (modifiers & RIGHT) printf("RIGHT");
        if (modifiers & LEFT)  printf("LEFT");
        if (modifiers & CTRL)  printf("CTRL");
        if (modifiers & ALT)   printf("ALT");
        printf("]");
    }
    /* print out the character read */
    if (isalnum(key & 0xFF))
        printf("'%c'\n", key);
    else
        printf("%#02x\n", key);
    return 0;
}

8. biosmemory

8.1 函数说明

函数声明 函数功能
int biosmemory(void); 返回存储块大小,以K为单位

8.2 演示示例

#include <stdio.h>
#include <bios.h>

int main(void)
{
   
   
    int memory_size;

    memory_size = biosmemory();  /* returns value up to 640K */
    printf("RAM size = %dK\n",memory_size);
    return 0;
}

9. biosprint

9.1 函数说明

函数声明 函数功能
int biosprint(int cmd, int byte, int port); 直接使用BIOS服务的打印机I/O

9.2 演示示例

#include <stdio.h>
#include <conio.h>
#include <bios.h>

int main(void)
{
   
   
    #define STATUS  2    /* printer status command */
    #define PORTNUM 0    /* port number for LPT1 */

    int status, abyte=0;

    printf("Please turn off your printer.  Press any key to continue\n");
    getch();
    status = biosprint(STATUS, abyte, PORTNUM);
    if (status & 0x01)
        printf("Device time out.\n");
    if (status & 0x08)
        printf("I/O error.\n");

    if (status & 0x10)
        printf("Selected.\n");
    if (status & 0x20)
        printf("Out of paper.\n");

    if (status & 0x40)
        printf("Acknowledge.\n");
    if (status & 0x80)
        printf("Not busy.\n");

    return 0;
}

10. biostime

10.1 函数说明

函数声明 函数功能
long biostime(int cmd, long newtime); 读取或设置BIOS时间

10.2 演示示例

#include <stdio.h>
#include <bios.h>
#include <time.h>
#include <conio.h>

int main(void)
{
   
   
    long bios_time;

    clrscr();
    cprintf("The number of clock ticks since midnight is:\r\n");
    cprintf("The number of seconds since midnight is:\r\n");
    cprintf("The number of minutes since midnight is:\r\n");
    cprintf("The number of hours since midnight is:\r\n");
    cprintf("\r\nPress any key to quit:");
    while(!kbhit())
    {
   
   
        bios_time = biostime(0, 0L);

        gotoxy(50, 1);
        cprintf("%lu", bios_time);

        gotoxy(50, 2);
        cprintf("%.4f", bios_time / CLK_TCK);

        gotoxy(50, 3);
        cprintf("%.4f", bios_time / CLK_TCK / 60);

        gotoxy(50, 4);
        cprintf("%.4f", bios_time / CLK_TCK / 3600);
    }
    return 0;
}

11. brk

11.1 函数说明

函数声明 函数功能
int brk(void *endds); 用来改变分配给调用程序的数据段的空间数量

11.2 演示示例

#include <stdio.h>
#include <alloc.h>

int main(void)
{
   
   
    char *ptr;

    printf("Changing allocation with brk()\n");
    ptr = malloc(1);
    printf("Before brk() call: %lu bytes free\n", coreleft());
    brk(ptr+1000);
    printf(" After brk() call: %lu bytes free\n", coreleft());
    return 0;
}

12. bsearch

12.1 函数说明

函数声明 函数功能
void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *)); 二分法搜索

12.2 演示示例

#include <stdlib.h>
#include <stdio.h>

#define NELEMS(arr) (sizeof(arr) / sizeof(arr[0]))

int numarray[] = {
   
   1, 2, 3, 5, 6, 8, 9, 10, 12, 14};

int numeric (const int *p1, const int *p2)
{
   
   
    return(*p1 - *p2);
}

int lookup(int key)
{
   
   
    int *itemptr;

    /* The cast of (int(*)(const void *,const void*)) is needed to avoid a type mismatch error at compile time */
    itemptr = (int(*))bsearch(&key, numarray, NELEMS(numarray), sizeof(int), (int(*)(const void *,const void *))numeric);
    return (itemptr != NULL);
}

int main(void)
{
   
   
    int a;
    printf("Please input key: ");
    scanf("%d", &a);
    if (lookup(a))
        printf("%d is in the table.\n", a);
    else
        printf("%d isn't in the table.\n", a);
    return 0;
}

12.3 运行结果

image.png
image.png

参考

  1. [API Reference Document]
  2. [c语言中的 bar 函数]
  3. [c语言中的 bar3d 函数]
目录
相关文章
|
3天前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
26 15
|
3天前
|
C语言
【C语言程序设计——函数】亲密数判定(头歌实践教学平台习题)【合集】
本文介绍了通过编程实现打印3000以内的全部亲密数的任务。主要内容包括: 1. **任务描述**:实现函数打印3000以内的全部亲密数。 2. **相关知识**: - 循环控制和跳转语句(for、while循环,break、continue语句)的使用。 - 亲密数的概念及历史背景。 - 判断亲密数的方法:计算数A的因子和存于B,再计算B的因子和存于sum,最后比较sum与A是否相等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台对代码进行测试,预期输出如220和284是一组亲密数。 5. **通关代码**:提供了完整的C语言代码实现
39 24
|
3天前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
39 23
|
2天前
|
存储 编译器 C语言
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
17 1
|
1月前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
75 10
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
59 9
|
1月前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
45 8
|
1月前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
55 6
|
1月前
|
存储 C语言
【C语言】输入/输出函数详解
在C语言中,输入/输出操作是通过标准库函数来实现的。这些函数分为两类:标准输入输出函数和文件输入输出函数。
321 6
|
1月前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
70 6