首页 > 其他分享 >C语言函数大全-- s 开头的函数(2)

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

时间:2023-04-28 23:03:11浏览次数:33  
标签:输出 函数 示例 -- C语言 int 设置 对齐

C语言函数大全

本篇介绍C语言函数大全-- s 开头的函数(2)

1. setlinestyle

1.1 函数说明

函数声明 函数功能
void setlinestyle( int linestyle, unsigned upattern, int thickness ); 设置当前绘图窗口的线条样式、线型模式和线条宽度

参数:

  • linestyle : 线条样式,取值范围为 0 到 4,不同的值对应着不同的线条样式,详见如下表格
  • upattern : 线型模式,它是一个 16 位的无符号整数,用二进制位表示线型模式,其中 1 表示绘制线条,0 表示空白。例如,如果 upattern 的值是 0x00FF,则表示绘制一段线条,然后空白一段,重复这个过程直到结束。如果 upattern 的值是 0x5555,则表示绘制一段虚线。
  • thickness : 线条宽度,取值范围为 1 到 10,表示线条的像素宽度
线条样式 描述
SOLID_LINE 实线
DOTTED_LINE 1 虚线
CENTER_LINE 2 点线
DASHED_LINE 3 长短线
USERBIT_LINE 4 双点线

1.2 演示示例

#include <graphics.h>
#include <string.h>

/* the names of the line styles supported */
char *lname[] = {
   "SOLID_LINE",
   "DOTTED_LINE",
   "CENTER_LINE",
   "DASHED_LINE",
   "USERBIT_LINE"
   };

int main(void)
{
    int gdriver = DETECT, gmode;

    int style, midx, midy, userpat;
    char stylestr[40];

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

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

    userpat = 1;

    for (style=SOLID_LINE; style<=USERBIT_LINE; style++)
    {
        setlinestyle(style, userpat, 1);

        strcpy(stylestr, lname[style]);

        line(0, 0, midx-10, midy);

        rectangle(100, 100, getmaxx() - 100, getmaxy() - 100);

        outtextxy(midx, midy, stylestr);

        getch();
        cleardevice();
    }

    closegraph();
    return 0;
}

1.3 运行结果

在这里插入图片描述

2. setmem

2.1 函数说明

函数声明 函数功能
void *setmem(void *dest, size_t n, int c); 用于将指定内存区域的每个字节都设置为指定的值

参数:

  • dest : 要设置的内存区域的指针
  • n : 要设置的字节数
  • c : 要设置的值

·注意: setmem() 并不是标准 C 函数,而是 POSIX 标准库函数,因此可能并不被所有平台所支持。如果您的编译器或操作系统不支持 setmem() 函数,可以使用标准 C 库函数 memset() 来代替

2.2 演示示例

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

int main()
{
    char *str = (char *)malloc(10);  // 分配 10 字节的内存空间

    // 将 str 中的每个字节都设置为 'A'
    setmem(str, 10, 'A');

    printf("%s\n", str);

    free(str);

    return 0;
}

在上面的示例程序中,

  • 我们首先使用 malloc() 函数分配了 10 字节的内存空间,并将其赋值给指针变量 str。
  • 然后,我们使用 setmem() 函数将 str 指向的内存区域的每个字节都设置为 'A'
  • 最后,我们输出 str 的内容并使用 free() 函数释放了分配的内存空间。

3. setmode

3.1 函数说明

函数声明 函数功能
int setmode(int fd, int mode); 它是 Windows 系统下的特定库函数,用于将指定文件的 I/O 模式设置为文本模式或二进制模式

参数:

  • fd : 要设置模式的文件描述符,通常使用 fileno() 函数将文件指针转换为文件描述符
  • mode : 要设置的模式,它可以取以下两个值中的一个:
    • _O_BINARY:二进制模式
    • _O_TEXT:文本模式

注意:Windows 系统中,文本模式和二进制模式之间的区别在于换行符的处理方式。在文本模式下,Windows 将回车符(\r)和换行符(\n)组成的字符序列映射为单个换行符(\n),因此在读取文本文件时可以正确处理换行符。在二进制模式下,Windows 不对回车符和换行符做任何转换,因此在读取文本文件时可能会出现问题。

3.2 演示示例

#include <stdio.h>
#include <fcntl.h>

int main()
{
    int result;
    result = setmode(fileno(stdin), O_TEXT);
    if (result == -1)
        perror("Mode not available\n");
    else
        printf("Mode successfully switched\n");
    return 0;
}

在上面的示例程序中,我们首先使用 setmode() 函数将标准输入流的模式从二进制模式切换到文本模式;如果调用成功,则返回 0,否则返回 -1,并将错误信息存储在全局变量 errno 中。在程序中,我们使用 perror() 函数来输出错误信息。如果调用成功,则输出一条提示信息。

注意: setmode() 函数只适用于 Windows 系统下的 C/C++ 编程,并且不是标准库函数,因此在跨平台编程时应该避免使用它。在 Unix/Linux 系统下,也可以使用 fcntl() 函数来设置文件描述符的模式。

3.3 运行结果

在这里插入图片描述

4. setpalette

4.1 函数说明

函数声明 函数功能
void setpalette(int colornum, int color); 设置调色板的颜色

参数:

  • colornum : 要设置的调色板中的颜色数量
  • color : 是一个整数类型的值,用于表示调色板中的颜色。这个参数可以是一个 RGB 值,也可以是一个预定义颜色名称,例如 REDBLUE

4.2 演示示例

#include <graphics.h>

int main()
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "");

    // 将第 5 种颜色设置为红色
    setpalette(5, RED);

    // 绘制一条红色的直线
    setcolor(5);
    line(100, 100, 200, 100);

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

4.3 运行结果

在这里插入图片描述

5. setrgbpalette

5.1 函数说明

函数声明 函数功能
void setrgbpalette(int colornum, int red, int green, int blue); 用于设置当前绘图窗口的调色板中某个颜色的 RGB

参数:

  • colornum : 要修改的颜色索引,取值范围为 0~255
  • red、green 和 blue 要设置的 RGB 值,取值范围为 0~255

5.2 演示示例

#include <graphics.h>

int main()
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "");

    setbkcolor(WHITE);
    cleardevice();

    // 将第 5 种颜色设置为蓝绿色
    setrgbpalette(5, 0, 128, 128);

    // 绘制一条蓝绿色的斜线
    setcolor(5);
    line(100, 100, 200, 200);

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

在上述的这个示例程序中,

  • 我们首先使用 setbkcolor() 函数设置背景颜色为白色,然后清除原有屏幕使前面设置生效。
  • 接着我们使用 setrgbpalette() 函数将第 5 种颜色设置为蓝绿色,并使用 setcolor() 函数将绘图颜色设为索引值 5(即蓝绿色);
  • 最后使用 line() 函数绘制了一条斜线。

5.3 运行结果

在这里插入图片描述

6. settextjustify

6.1 函数说明

函数声明 函数功能
void settextjustify(int horiz, int vert); 用于设置文本输出的对齐方式

参数:

  • horiz : 水平对齐方式,可以取以下值:
    • LEFT_TEXT:左对齐
    • CENTER_TEXT:居中对齐
    • RIGHT_TEXT:右对齐
  • vert : 垂直对齐方式,可以取以下值:
    • TOP_TEXT:顶部对齐
    • CENTER_TEXT:居中对齐
    • BOTTOM_TEXT:底部对齐

6.2 演示示例

#include <graphics.h>

int main()
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "");

    // 设置文本输出的对齐方式为居中对齐
    settextjustify(CENTER_TEXT, CENTER_TEXT);

    // 输出一行居中对齐的文本
    outtextxy(getmaxx() / 2, getmaxy() / 2, "Hello, world!");

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

在上述的示例程序中,我们使用 settextjustify() 函数将文本输出的对齐方式设置为居中对齐,然后使用 outtextxy() 函数在窗口的中心输出一行文本。

注意: 在使用 settextjustify() 函数设置对齐方式时,必须指定正确的参数值,并且同时考虑水平和垂直方向的对齐方式,否则可能会导致文本输出位置错误。

6.3 运行结果

在这里插入图片描述

7. settextstyle

7.1 函数说明

函数声明 函数功能
void settextstyle(int font, int direction, int charsize); 用于设置当前文本输出的字体、方向和大小

参数:

  • font : 要使用的字体编号,可以取以下值:
    • DEFAULT_FONT:默认字体
    • TRIPLEX_FONT:粗体三线字体
    • SMALL_FONT:小号字体
    • SANS_SERIF_FONT:无衬线字体
    • GOTHIC_FONT:哥特式字体
    • SCRIPT_FONT:手写字体
  • direction : 文本输出的方向,可以取以下值:
    • HORIZ_DIR:水平方向(从左到右)
    • VERT_DIR:垂直方向(从下到上)
  • horiz : 水平对齐方式,可以取以下值:
    • DEFAULT_WIDTHDEFAULT_HEIGHT:默认大小
    • TRIPLEX_WIDTHTRIPLEX_HEIGHT:大号尺寸
    • SMALL_WIDTHSMALL_HEIGHT:小号尺寸

7.2 演示示例

#include <graphics.h>

int main()
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "");

    // 设置文本输出的字体、方向和大小
    settextstyle(TRIPLEX_FONT, HORIZ_DIR, 4);

    // 输出一行文本
    outtextxy(100, 100, "Hello, world!");

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

在上述的示例程序中,我们使用 settextstyle() 函数将文本输出的字体设置为粗体三线字体、方向设置为水平方向、大小设置为大号尺寸,然后使用 outtextxy() 函数在窗口的指定位置输出一行文本。

注意: 在使用 settextstyle() 函数设置文本样式时,必须指定正确的参数值,并且根据具体需求灵活选择字体、方向和大小,否则可能会导致文本输出不符合预期。

7.3 运行结果

在这里插入图片描述

8. settime

8.1 函数说明

函数声明 函数功能
void settime(struct time *timep); 设置当前系统时间

参数:

  • timep : 用于存储当前系统时间的结构体变量

8.2 演示示例

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

int main(void)
{
    struct  time t;

    gettime(&t);
    printf("The current minute is: %d\n", t.ti_min);
    printf("The current hour is: %d\n", t.ti_hour);
    printf("The current hundredth of a second is: %d\n", t.ti_hund);
    printf("The current second is: %d\n", t.ti_sec);

    t.ti_min++;
    settime(&t);

    return 0;
}

在上述的程序中,

  • 我们首先定义了一个 struct time 类型的变量 t,用于存储当前系统时间。然后使用 gettime() 函数获取当前时间,并将小时、分钟、秒和百分之一秒等信息存储到 t 变量的对应成员变量中。
  • 接着,程序使用 printf() 函数输出了当前的分钟数、小时数、百分之一秒数和秒数。这里使用了 %d 占位符来指定输出整数类型的值。
  • 最后,程序将 t 变量的分钟数加上了 1,然后使用 settime() 函数将修改后的时间写入系统时钟中。

注意 : 这个程序依赖于 DOS 系统提供的日期和时间相关函数,可能无法在其他操作系统或环境下运行。此外,直接修改系统时间可能会对计算机的正常运行产生影响,因此应该谨慎使用。 在现代的 Windows 操作系统中,DOS 环境已经被废弃,因此这个程序可能无法正常工作。如果要获取和修改当前系统时间,可以使用操作系统提供的相关 API 或系统调用接口实现。例如,在 Windows 平台上,可以使用 GetSystemTime()SetSystemTime() 等函数来获取和设置系统时间。

9. setusercharsize

9.1 函数说明

函数声明 函数功能
void setusercharsize(int multx, int dirx, int multy, int diry); 用于设置用户定义的字符大小

参数:

  • multx : 水平放大倍数,取值为正整数
  • dirx : 水平方向,取值为 1-1。当 dirx 的值为 1 时,字符不进行左右翻转;当 dirx 的值为 -1 时,字符进行左右翻转
  • multy : 垂直放大倍数,取值为正整数
  • diry : 垂直方向,取值为 1-1。当 diry 的值为 1 时,字符不进行上下翻转;当 diry 的值为 -1 时,字符进行上下翻转。

9.2 演示示例

#include <graphics.h>

int main()
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "");

    // 设置字符的大小为水平方向放大 2 倍、垂直方向放大 3 倍
    setusercharsize(2, 1, 3, 1);

    // 输出一行文本
    outtextxy(100, 100, "Hello, world!");

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

在上述这个示例程序中,我们使用 setusercharsize() 函数将当前字符的大小设置为水平方向放大 2 倍、垂直方向放大 3 倍,然后使用 outtextxy() 函数在窗口的指定位置输出一行文本。

注意: 在使用 setusercharsize() 函数设置字符大小时,必须指定正确的参数值,并且考虑到水平和垂直方向的缩放倍数,否则可能会导致字符输出不符合预期。

9.3 运行结果

在这里插入图片描述

10. setvbuf

10.1 函数说明

函数声明 函数功能
int setvbuf(FILE *stream, char *buf, int type, unsigned size); 用于设置文件流的缓冲方式

参数:

  • stream : 要设置缓冲方式的文件指针,可以是标准输入流(stdin)、标准输出流(stdout)或标准错误流(stderr),也可以是通过 fopen() 函数打开的文件指针
  • buf : 缓冲区指针,可以是一个已经分配好的缓冲区,也可以是 NULL。如果 buf 参数为 NULL,则 setvbuf() 函数将自动为文件流分配一块缓冲区
  • type : 缓冲类型,可以取以下值:
    • _IONBF:不使用缓冲区,直接从或向设备读写数据
    • _IOLBF:行缓冲,每行数据结束后刷新缓冲区
    • _IOFBF:全缓冲,填满缓冲区后才进行读写操作
  • size: 缓冲区大小,如果 buf 参数不为 NULL,则 size 参数指定了缓冲区大小;如果 buf 参数为 NULL,则 size 参数指定了系统为缓冲区分配的大小。size 参数只对全缓冲方式有效,行缓冲和无缓存方式忽略该参数

10.2 演示示例

#include <stdio.h>

int main(void)
{
    FILE *input, *output;
    char bufr[512];

    input = fopen("file.in", "r+b");
    output = fopen("file.out", "w");

    if (setvbuf(input, bufr, _IOFBF, 512) != 0)
        printf("failed to set up buffer for input file\n");
    else
        printf("buffer set up for input file\n");

    if (setvbuf(output, NULL, _IOLBF, 132) != 0)
        printf("failed to set up buffer for output file\n");
    else
        printf("buffer set up for output file\n");

    fclose(input);
    fclose(output);
    return 0;
}

在上述的示例程序中,

  • 我们首先定义了两个文件指针变量 inputoutput,分别表示输入文件和输出文件。
  • 然后调用 fopen() 函数打开输入文件和输出文件,并将返回的文件指针保存到对应的变量中。
  • 接着,程序使用 setvbuf() 函数分别为输入文件和输出文件设置缓冲方式。对于输入文件,使用 _IOFBF 缓冲类型和大小为 512 字节的缓冲区;对于输出文件,使用 _IOLBF 缓冲类型和大小为 132 字节的缓冲区(此处 bufr 缓冲区为空指针)。在设置完缓冲方式后,程序根据 setvbuf() 函数的返回值判断是否设置成功,如果返回值不为 0,则说明设置失败,否则说明设置成功,并输出相应的提示信息。
  • 最后,程序使用 fclose() 函数关闭输入文件和输出文件。

注意: 在使用文件流进行读写操作时,必须在适当的时候进行缓冲区清理操作,以避免数据丢失或者读取到过期数据等问题。另外,需要根据具体需求选择合适的缓冲方式和缓冲区大小,以实现最优的性能和稳定性。

10.3 运行结果

在这里插入图片描述

标签:输出,函数,示例,--,C语言,int,设置,对齐
From: https://blog.51cto.com/huazie/6235742

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:组合总和
    题目:给你一个无重复元素的整数数组 candidates和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target的所有 不同组合,并以列表形式返回。你可以按任意顺序返回这些组合。candidates中的同一个数字可以无限制重复被选取。如果至少一个数字的被......
  • #yyds干货盘点# LeetCode面试题:子集 II
    1.简述:给你一个整数数组nums,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。返回的解集中,子集可以按任意顺序排列。 示例1:输入:nums=[1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例2:输入:nums=[0]输出:[[],[0]]2.代码实现:classSolu......
  • 如何搭建表白墙网站(LoveWall),Linux搭建网站教程
    用宝塔面板和开源表白墙程序LoveWall搭建一个表白墙网站。LoveWall是一个基于Thinkphp开发的表白墙。特色功能点赞发评论发弹幕多校区分享页涉证、涉H、暴力、违禁物等名词进行检测waitUpdate。下面是搭建教程:一、注册域名域名就是你的网站的网址,比如:blog.zeruns.tech就是我......
  • 树莓派Python读取DHT11温湿度数据
    树莓派4使用Python通过GPIO从DHT11温湿度传感器读取数据原文地址:https://blog.zeruns.tech/archives/625.html介绍DHT11是一款有已校准数字信号输出的温湿度传感器。其精度湿度±5%RH,温度±2℃,量程湿度20-90%RH,温度0~50℃。精度不高,但价格低廉。DHT11使用单总线通信。供电电......
  • 威联通NAS使用Container搭建我的世界服务器,带网页管理面板
    QNAP使用LXC容器搭建Minecraft游戏服务器,带WEB管理面板Linux搭建我的世界服务器:https://blog.zeruns.tech/archives/584.htmlwindows搭建MC服务器教程:https://blog.zeruns.tech/archives/529.htmlMC开服交流群:966038270视频教程:https://www.bilibili.com/video/BV1Fv411471D/安卓安......
  • 树莓派搭建我的世界服务器教程,带网页管理面板
    raspberry使用MCSManager搭建Minecraft私服,带WEB管理面板本教程使用Raspbian系统和树莓派3,系统安装方法和ssh开启方法就不说了,网上一堆教程,自行百度。X86Linux搭建MC服务器教程:https://blog.zeruns.tech/archives/584.htmlARM搭建MC服务器教程,适用于树莓派:https://blog.zeruns.te......
  • 2w字 详解 String,yyds
    关注公众号“Java后端技术全栈”回复“000”获取程序员必备电子书前言大家好,我是老田,今天给大家分享java基础知识之String。String类的重要性就不必说了,可以说是我们后端开发用的最多的类,所以,很有必要好好来聊聊它。本文主要内容如下:String简介我们先来说说,java中八大数据类型,然......
  • springboot 发送邮件
    @AutowiredprivateJavaMailSenderjavaMailSender;publicStringsendEmail(ToMailtoMail){SimpleMailMessagemessage=newSimpleMailMessage();message.setFrom("[email protected]");message.setTo("my_M......
  • 词云重叠
    #代码12-1评论去重的代码 import pandasaspdimport reimport jieba.possegaspsgimport numpyasnp  #去重,去除完全重复的数据reviews = pd.read_csv(r"G:\data\data\reviews.csv")reviews = reviews[['content', 'content_type']].drop_dupl......
  • Win32 API从磁盘文件图片创建工具栏图标
    关键字:Win32API从磁盘,文件,图片创建工具栏图标,包含提示文字。编译命令:g++demo01.cpp-mwindows-lcomctl32-ldwmapi-odemo01-static-Wall-std=c++11#defineUNICODE#include<Windows.h>#include<strsafe.h>#include<commctrl.h>/******CALLBACK代表__stdcall......