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

这篇具有很好参考价值的文章主要介绍了C语言函数大全-- i 开头的函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


本篇介绍C语言函数大全– i 开头的函数

1. imagesize

1.1 函数说明

函数声明 函数功能
unsigned imagesize(int left, int top, int right, int bottom); 获取保存位图像所需的字节数

1.2 演示示例

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

#define ARROW_SIZE 10

void draw_arrow(int x, int y);

int main()
{
    int gdriver = DETECT, gmode, errorcode;
    void *arrow;
    int x, y, maxx;
    unsigned int size;

    initgraph(&gdriver, &gmode, "");

    errorcode = graphresult();
    if (errorcode != grOk)
    {
        printf("Graphics error: %s\n", grapherrormsg(errorcode));
        printf("Press any key to halt:");
        getch();
        exit(1);
    }

    maxx = getmaxx();
    x = 0;
    y = getmaxy() / 2;

    draw_arrow(x, y);

    size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE);

    // 分配内存以保存图像
    arrow = malloc(size);

    // 抓取图像
    getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow);

    // 重复,直到按键被按下
    while (!kbhit())
    {
        // 擦除旧图像
        putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);

        x += ARROW_SIZE;
        if (x >= maxx)
            x = 0;

        // 绘制新图像
        putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
    }

    free(arrow);
    closegraph();
    return 0;
}

void draw_arrow(int x, int y)
{
    // 在屏幕上画一个箭头
    moveto(x, y);
    linerel(4*ARROW_SIZE, 0);
    linerel(-2*ARROW_SIZE, -1*ARROW_SIZE);
    linerel(0, 2*ARROW_SIZE);
    linerel(2*ARROW_SIZE, -1*ARROW_SIZE);
}

1.3 运行结果

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

2. initgraph

2.1 函数说明

函数声明 函数功能
void initgraph( int *graphdriver, int *graphmode, char *pathtodriver ); 初始化图形系统

2.2 演示示例

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

int main()
{
    int gdriver = DETECT, gmode, errorcode;
    // 初始化图形系统
    initgraph(&gdriver, &gmode, "");

    errorcode = graphresult();
    if (errorcode != grOk)
    {
        printf("Graphics error: %s\n", grapherrormsg(errorcode));
        printf("Press any key to halt:");
        getch();
        exit(1);
    }

    line(0, 0, getmaxx(), getmaxy());

    getch();
    closegraph();
    return 0;
}

2.3 运行结果

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

3. inport

3.1 函数说明

函数声明 函数功能
int inport(int protid); 从硬件端口中输入

3.2 演示示例

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

int main()
{
    int result;
    int port = 0;  // 串行端口 0
    // 从硬件端口中输入
    result = inport(port);
    printf("Word read from port %d = 0x%X\n", port, result);
    return 0;
}

4. insline

4.1 函数说明

函数声明 函数功能
void insline(void); 在文本窗口中插入一个空行

4.2 演示示例

#include <conio.h>

int main()
{
    clrscr();
    cprintf("INSLINE inserts an empty line in the text window\r\n");
    cprintf("at the cursor position using the current text\r\n");
    cprintf("background color.  All lines below the empty one\r\n");
    cprintf("move down one line and the bottom line scrolls\r\n");
    cprintf("off the bottom of the window.\r\n");
    cprintf("\r\nPress any key to continue:");
    gotoxy(1, 3);
    getch();
    // 在文本窗口中插入一个空行
    insline();
    getch();
    return 0;
}

5. installuserdriver

5.1 函数说明

函数声明 函数功能
int installuserdriver(char *name, int (*detect)(void)); 安装设备驱动程序到BGI设备驱动程序表中

注意: 该函数在 WinBGI 中不可用

5.2 演示示例

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

int huge detectEGA(void);
void checkerrors(void);

int main(void)
{
    int gdriver, gmode;
    // 安装用户编写的设备驱动程序
    gdriver = installuserdriver("EGA", detectEGA);
    // 必须强制使用检测程序
    gdriver = DETECT;
    // 检查是否有任何安装错误
    checkerrors();
    // 初始化图形程序
    initgraph(&gdriver, &gmode, "");
    // 检查是否有任何初始化错误
    checkerrors();
    // 画一条对象线
    line(0, 0, getmaxx(), getmaxy());

    getch();
    closegraph();
    return 0;
}

/*
    检测EGA或VGA卡
 */
int huge detectEGA(void);
{
    int driver, mode, sugmode = 0;
    detectgraph(&driver, &mode);
    if ((driver == EGA) || (driver == VGA))
        return sugmode; // 返回建议的视频模式编号
    else
        return grError; // 返回错误代码
}

/*
    检查并报告任何图形错误
 */
void checkerrors(void)
{
    // 获取上次图形操作的读取结果
    int errorcode = graphresult();
    if (errorcode != grOk)
    {
        printf("Graphics error: %s\n", grapherrormsg(errorcode));
        printf("Press any key to halt:");
        getch();
        exit(1);
    }
}

6. installuserfont

6.1 函数说明

函数声明 函数功能
int installuserfont( char *name ); 安装未嵌入BGI系统的字体文件(CHR)

注意: 该函数在 WinBGI 中不可用

6.2 演示示例

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

void checkerrors(void);

int main()
{
    int gdriver = DETECT, gmode;
    int userfont;
    int midx, midy;

    initgraph(&gdriver, &gmode, "");

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

    checkerrors();

    // 安装用户定义的字体文件
    userfont = installuserfont("USER.CHR");

    checkerrors();

    // 选择用户字体
    settextstyle(userfont, HORIZ_DIR, 4);

    outtextxy(midx, midy, "Testing!");

    getch();
    closegraph();
    return 0;
}

/*
    检查并报告任何图形错误
 */
void checkerrors(void)
{
    // 获取上次图形操作的读取结果
    int errorcode = graphresult();
    if (errorcode != grOk)
    {
        printf("Graphics error: %s\n", grapherrormsg(errorcode));
        printf("Press any key to halt:");
        getch();
        exit(1);
    }
}

7. int86

7.1 函数说明

函数声明 函数功能
int int86(int intr_num, union REGS *inregs, union REGS *outregs); 通用8086软中断接口

7.2 演示示例

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

#define VIDEO 0x10

void movetoxy(int x, int y)
{
    union REGS regs;

    regs.h.ah = 2;  /* set cursor postion */
    regs.h.dh = y;
    regs.h.dl = x;
    regs.h.bh = 0;  /* video page 0 */
    int86(VIDEO, &regs, &regs);
}

int main(void)
{
    clrscr();
    movetoxy(35, 10);
    printf("Hello\n");
    return 0;
}

8. int86x

8.1 函数说明

函数声明 函数功能
int int86x(int intr_num, union REGS *insegs, union REGS *outregs, struct SREGS *segregs); 通用8086软中断接口

8.2 演示示例

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

int main(void)
{
    char filename[80];
    union REGS inregs, outregs;
    struct SREGS segregs;

    printf("Enter filename: ");
    gets(filename);
    inregs.h.ah = 0x43;
    inregs.h.al = 0x21;
    inregs.x.dx = FP_OFF(filename);
    segregs.ds = FP_SEG(filename);
    int86x(0x21, &inregs, &outregs, &segregs);
    printf("File attribute: %X\n", outregs.x.cx);
    return 0;
}

9. intdos

9.1 函数说明

函数声明 函数功能
int intdos(union REGS *inregs, union REGS *outregs); 通用DOS接口

9.2 演示示例

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

/* 
    删除文件,成功返回0,失败返回非0。
 */
int delete_file(char near *filename)
{
    union REGS regs;
    int ret;
    regs.h.ah = 0x41; 
    regs.x.dx = (unsigned) filename;
    ret = intdos(&regs, &regs);

    // 如果设置了进位标志,则出现错误
    return(regs.x.cflag ? ret : 0);
}

int main(void)
{
    int err;
    err = delete_file("NOTEXIST.$$$");
    if (!err)
        printf("Able to delete NOTEXIST.$$$\n");
    else
        printf("Not Able to delete NOTEXIST.$$$\n");
    return 0;
}

10. intdosx

10.1 函数说明

函数声明 函数功能
int intdosx(union REGS *inregs, union REGS *outregs, struct SREGS *segregs); 通用DOS中断接口

10.2 演示示例

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

/* 
    删除文件,成功返回0,失败返回非0。
 */
int delete_file(char far *filename)
{
	union REGS regs; 
	struct SREGS sregs;
	int ret;
	regs.h.ah = 0x41;
	regs.x.dx = FP_OFF(filename);
	sregs.ds = FP_SEG(filename);
	ret = intdosx(&regs, &regs, &sregs);

	// 如果设置了进位标志,则出现错误
	return(regs.x.cflag ? ret : 0);
}

int main(void)
{
	int err;
	err = delete_file("NOTEXIST.$$$");
	if (!err)
		printf("Able to delete NOTEXIST.$$$\n");
	else
		printf("Not Able to delete NOTEXIST.$$$\n");
	return 0;
}

11. intr

11.1 函数说明

函数声明 函数功能
void intr(int intr_num, struct REGPACK *preg); 改变软中断接口

11.2 演示示例

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

#define CF 1  // 进位标志

int main(void)
{
	char directory[80];
	struct REGPACK reg;

	printf("Enter directory to change to: ");
	gets(directory);
	reg.r_ax = 0x3B << 8;  // 将3Bh转换为AH
	reg.r_dx = FP_OFF(directory);
	reg.r_ds = FP_SEG(directory);
	intr(0x21, &reg);
	if (reg.r_flags & CF)
		printf("Directory change failed\n");
	getcwd(directory, 80);
	printf("The current directory is: %s\n", directory);
	return 0;
}

12. ioctl

12.1 函数说明

函数声明 函数功能
int ioctl(int fd, int cmd, ...) ; 控制 I/O 设备
参数 描述
fd 文件描述符
cmd 交互协议,设备驱动将根据 cmd 执行对应操作
可变参数arg,依赖 cmd 指定长度以及类型

12.2 演示示例

#include <stdio.h>
#include <dir.h>
#include <io.h>

int main(void)
{
	int stat = ioctl(0, 8, 0, 0);
	if (!stat)
		printf("Drive %c is removable.\n", getdisk() + 'A');
	else
		printf("Drive %c is not removable.\n", getdisk() + 'A');
	return 0;
}

13. isatty

13.1 函数说明

函数声明 函数功能
int isatty(int handle); 检查设备类型

13.2 演示示例

#include <stdio.h>
#include <io.h>

int main(void)
{
	int handle;

	handle = fileno(stdprn);
	if (isatty(handle))
		printf("Handle %d is a device type\n", handle);
	else
		printf("Handle %d isn't a device type\n", handle);
	return 0;
}

13.3 运行结果

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

14. ilogb,ilogbf,ilogbfl

14.1 函数说明

函数声明 函数功能
int ilogb (double x); 获取 x 的对数的积分部分(double)
int ilogbf (float x); 获取 x 的对数的积分部分(float)
int ilogbl (long double x); 获取 x 的对数的积分部分(long double)

如果计算成功,则返回 x 的对数的整数部分。如果 x0,则此函数返回FP_ILOGB0 并报告错误。如果 x 是NaN值,则此函数返回 FP_ILOGBNAN 并报告错误。如果 x 是正无穷大或负无穷大,此函数将返回 INT_MAX 并报告错误。

14.2 演示示例

#include <stdio.h>
#include <math.h>

int main()
{
    int result;
    double x = 15.0;
    result = ilogb(x);
    printf("The integral part of the logarithm of double value %lf is %d\n", x, result);

    float xf = 15.0f;
    result = ilogbf(xf);
    printf("The integral part of the logarithm of float value %f is %d\n", xf, result);

    long double xL = 15.0L;
    result = ilogbl(xL);
    printf("The integral part of the logarithm of long double value %Lf is %d\n", xL, result);

    return 0;
}

14.3 运行结果

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

15. itoa

15.1 函数说明

函数声明 函数功能
char * itoa(int value, char *string, int radix); 把一整数转换为字符串
参数 描述
value 被转换的整数
string 转换后储存的字符数组
radix 转换进制数,如2,8,10,16 进制等,大小应在2-36之间。

15.2 演示示例

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

int main(void)
{
   int number = 12345;
   char string[25];

   itoa(number, string, 2);
   printf("integer = %d string = %s\n", number, string);

   itoa(number, string, 8);
   printf("integer = %d string = %s\n", number, string);

   itoa(number, string, 10);
   printf("integer = %d string = %s\n", number, string);

   itoa(number, string, 16);
   printf("integer = %d string = %s\n", number, string);
   return 0;
}

15.3 运行结果

C语言函数大全-- i 开头的函数文章来源地址https://www.toymoban.com/news/detail-419139.html

参考

  1. [API Reference Document]
  2. [ioctl]

到了这里,关于C语言函数大全-- i 开头的函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言函数大全-- s 开头的函数(1)

    本篇介绍C语言函数大全-- s 开头的函数(1) 函数声明 函数功能 void *sbrk(intptr_t increment); 它是一个 Unix 系统的函数,用于调整程序的堆空间。 参数: increment : 增加的堆空间的大小 返回值: 如果调用成功,返回值即为增加空间前的原始堆顶指针; 如果出错,则返回 (void *

    2024年02月01日
    浏览(48)
  • C语言函数大全-- s 开头的函数(3)

    本篇介绍C语言函数大全-- s 开头的函数(3) 函数声明 函数功能 unsigned int sleep(unsigned int seconds); 它是 C 语言标准库中的函数,用于使当前进程挂起一定的时间。在挂起期间,操作系统会将该进程从调度队列中移除,直到指定的时间过去为止。 void Sleep(DWORD milliseconds); 它是 W

    2024年02月02日
    浏览(56)
  • Python类型转换,数据类型转换函数大全 与 strip()函数介绍

    虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。 比如说,我们想通过使用 print() 函数输出信息“您的身高:”以及浮点类型 height 的值,如果在交互式解释器中执行如下代码: 会发

    2024年01月24日
    浏览(53)
  • 【C语言】操作符大全(保姆级介绍)

    🚩 纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:C语言 🔥该篇将详细介绍各种操作符的功能。  操作符是编程中表示操作的符号或符号组合。它们用于执行算术、逻辑、比较和其他操作。  操作符可以分为这几类:算术操作符;移位操作符;位操作符;

    2024年02月11日
    浏览(35)
  • 【C语言进阶】最常用的库函数大全——从入门到精通

    前言: 一.字符串函数 1.strlen——求字符串长度 strlen 2.长度不受限制的字符串函数 a.strcpy——字符串拷贝 strcpy  b.strcat——追加字符串 strcat  c.strcmp——字符串比较 strcmp 3.长度受限制的字符串函数——strncpy,strncat,strncmp 为什么会出现这些函数呢? strncpy函数: strncpy strncat函数

    2024年02月03日
    浏览(58)
  • 【C语言】动态内存函数介绍

    目录 1.malloc和free 2.calloc 3.realloc   C语言提供了一个动态内存开辟的函数malloc: 这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。 ✔如果开辟成功,则返回一个指向开辟好空间的指针。 ✔如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做

    2024年01月22日
    浏览(34)
  • Callback回调函数介绍(C语言)

    目录 1. 回调函数的定义 2. 为什么要用回调函数 3. 怎么用回调函数 3.1 怎么使用没有参数的回调函数 3.2 怎么使用带参数的回调函数 最近在工作中经常用到回调函数callback,总结一下。 先来看看维基百科对callback的解释:In computer programming, a callback is any executable code that is pass

    2024年02月02日
    浏览(55)
  • C语言内存函数介绍以及实现

    目录 前言 一:内存拷贝函数 (1)memcpy( )函数 (2)memove( )函数 二:内存比较函数 三:内存设置函数 本文介绍的函数的函数声明都在头文件string.h中。 函数声明:void* memcpy(void* dest,const void* src,size_t num) 作用:把一片内存空间的字节拷贝到另一片内存空间。 函数参数的意义: ①dest指

    2024年02月01日
    浏览(38)
  • C语言字串函数、内存函数介绍以及模拟实现

        目录 前言 本期内容介绍: 一、字符串函数 strlen介绍 strlen 模拟实现(三种方式) 方法一:计数器法  方法二:递归法(不创建临时变量法) 方法三:指针-指针 strcpy介绍 strcpy模拟实现 ​编辑strcmp介绍 strcmp模拟实现 strcat介绍 strcat模拟实现 strncpy介绍 strncpy模拟实现 s

    2024年02月14日
    浏览(40)
  • 初阶C语言——特别详细地介绍函数

     💓作者简介: 加油,旭杏,目前大二,正在学习 C++ , 数据结构 等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏👀 🚚代码仓库:旭日东升 1👀 🌹欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖        从标题也能看出来,我们有要进行 超详细

    2024年02月14日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包