C语言函数大全-- x 开头的函数(5)

2023-11-06

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

1. xdrmem_create

1.1 函数说明

函数声明 函数功能
void xdrmem_create(XDR *xdrs, caddr_t addr, u_int size, enum xdr_op op);); 用于创建一个内存 XDR 流,以便进行编码或解码操作

参数:

  • xdrs : 指向 XDR 数据结构的指针,表示要进行编码或解码的数据流
  • addr : 指向空间地址的指针,可用于存储编码或解码数据
  • size : 以字节为单位的空间大小,指定了 addr 指向空间的大小
  • op : 枚举类型 xdr_op,指定流是用于读取还是写入

1.2 演示示例

#include <stdio.h>
#include <rpc/xdr.h>

int main(void) 
{
    XDR xdrs;
    char buffer[1024];
    
    // 创建一个写入流
    xdrmem_create(&xdrs, buffer, sizeof(buffer), XDR_ENCODE);
    
    // 将数据按照需要进行序列化
    int value = 42;
    if (!xdr_int(&xdrs, &value)) 
    {
        fprintf(stderr, "Serialization error!\n");
        return 1;
    }
    
    // 完成后释放资源
    xdr_destroy(&xdrs);
    
    return 0;
}

2. xdrmem_destroy

2.1 函数说明

函数声明 函数功能
void xdrmem_destroy(XDR* xdrs); 用于销毁先前创建的 XDR 内存流,释放其相关资源

参数:

  • xdrs : 指向 XDR 结构体的指针

2.2 演示示例

#include <stdio.h>
#include <rpc/xdr.h>

int main() 
{
    char buffer[1024];
    XDR xdrs;

    // 创建内存流
    xdrmem_create(&xdrs, buffer, sizeof(buffer), XDR_ENCODE);

    // 将数据写入内存流中
    int val = 123;
    if (!xdr_int(&xdrs, &val)) 
    {
        printf("无法将数据编码到内存流中");
        return -1;
    }

    // 销毁内存流
    xdrmem_destroy(&xdrs);

    return 0;
}

3. xdrrec_create

3.1 函数说明

函数声明 函数功能
bool_t xdrrec_create(XDR *xdrs, u_int sendsize, u_int recvsize, caddr_t tcp_handle, int (*readit)(char *, char *, int), int (*writeit)(char *, char *, int)); 用于创建一个可用于 XDR 编码或解码的 XDR

参数:

  • xdrs : 指向要编码或解码数据的 XDR 结构体的指针
  • sendsize : 无符号整数,指定用于发送数据的缓冲区大小
  • recvsize : 无符号整数,指定用于接收数据的缓冲区大小
  • tcp_handle : 指向传输句柄的指针,表示用于通信的 TCP 连接的句柄
  • readit : 指向从 TCP 连接中读取数据的函数的指针
  • writeit : 指向将数据写入 TCP 连接的函数的指针

3.2 演示示例

#include <stdio.h>
#include <rpc/xdr.h>

void main()
{
    XDR xdrs;
    u_int sendsize = 1024;
    u_int recvsize = 1024;
    caddr_t tcp_handle = NULL;
    int (*readit)(char *, char *, int) = NULL;
    int (*writeit)(char *, char *, int) = NULL;

    if (!xdrrec_create(&xdrs, sendsize, recvsize, tcp_handle, readit, writeit)) 
    {
        printf("Failed to create XDR stream.\n");
    } 
    else 
    {
        printf("Successfully created XDR stream.\n");
    }
}

在上面的示例代码中,们定义了一个 XDR 结构体和一些用于创建流的参数。然后,我们调用 xdrrec_create() 函数来创建 XDR 流,并根据函数的返回值确定是否成功创建了流。

4. xdrrec_endofrecord

4.1 函数说明

函数声明 函数功能
bool_t xdrrec_endofrecord(XDR *xdrs, bool_t flushnow); 用于在 XDR 流中记录数据的结束处插入分隔符

参数:

  • xdrs : 指向 XDR 的输入流的指针
  • flushnow : 是否立即刷新 XDR 流。如果设置为 非0 值,则在调用此函数时将强制刷新 XDR

返回值:

  • 如果成功设置记录结束标记,则返回 TRUE
  • 否则返回 FALSE

4.2 演示示例

#include <rpc/xdr.h>
#include <stdio.h>

int main()
{
    FILE *fp;
    XDR xdrs;
    char buffer[256];
    int len;

    // 打开文件
    fp = fopen("data.xdr", "wb");
    if(fp == NULL)
    {
        printf("打开文件失败!\n");
        return -1;
    }

    // 创建XDR流
    xdrstdio_create(&xdrs, fp, XDR_ENCODE);

    // 序列化一些数据
    sprintf(buffer, "这是一段文本数据。");
    len = strlen(buffer);
    xdr_bytes(&xdrs, &buffer, &len, 256);

    // 结束记录
    xdrrec_endofrecord(&xdrs, 1);

    // 关闭XDR流和文件
    xdr_destroy(&xdrs);
    fclose(fp);

    return 0;
}

5. xdrrec_eof

5.1 函数说明

函数声明 函数功能
int xdrrec_eof(XDR *xdrs); 用于检查在 XDR 流中是否遇到了文件结束符

参数:

  • xdrs : 指向 XDR 的输入流的指针

返回值:

  • 如果已经读取到了数据流的末尾,则返回 TRUE
  • 否则返回 FALSE

5.2 演示示例

#include <stdio.h>
#include <rpc/xdr.h>

int main() 
{
    XDR xdrs;
    char buffer[256];
    int eof;

    // 初始化XDR结构体
    xdrmem_create(&xdrs, buffer, sizeof(buffer), XDR_ENCODE);

    // 写入一些数据到缓冲区
    int i = 123;
    xdr_int(&xdrs, &i);

    // 检查是否到达了EOF
    eof = xdrrec_eof(&xdrs);

    if (eof) 
    {
        printf("已经到达EOF\n");
    } 
    else 
    {
        printf("还没有到达EOF\n");
    }

    return 0;
}

6. xdrrec_readbytes

6.1 函数说明

函数声明 函数功能
bool_t xdrrec_readbytes(XDR *xdrs, caddr_t addr, u_int len); 用于从输入流中读取字节并将其解析为指定的数据类型

参数:

  • xdrs : 指向 XDR 的输入流的指针
  • addr : 指向存储读取的字节序列的缓冲区的指针
  • len : 要读取的字节数

返回值:

  • 如果读取成功,则返回已成功读取的字节数;
  • 如果到达流的末尾,则返回 0
  • 如果发生了错误,则返回 负数【可以使用 perror() 函数来打印有关错误的详细信息,并根据需要进行处理】。

6.2 演示示例

#include <stdio.h>
#include <rpc/xdr.h>

int main() 
{
    char buffer[256];
    XDR xdrs;
    xdrstdio_create(&xdrs, stdin, XDR_DECODE);

    if (xdrrec_readbytes(&xdrs, buffer, sizeof(buffer))) 
    {
        printf("Read string: %s\n", buffer);
    } 
    else 
    {
        printf("Failed to read string.\n");
    }

    xdr_destroy(&xdrs);
    return 0;
}

在上述的示例代码中,

  • 首先,我们创建了一个 XDR 输入流,并将其关联到标准输入上;
  • 然后,使用 xdrrec_readbytes() 函数从输入流中读取字符串,并将其存储到 buffer 缓冲区中;
  • 接着,我们检查函数的返回值,如果成功读取字符串,则将其打印到标准输出上;否则,我们会打印错误消息;
  • 最后,我们销毁了 XDR 流并退出程序。

7. xdrrec_skiprecord

7.1 函数说明

函数声明 函数功能
bool_t xdrrec_skiprecord(XDR *xdrs); 用于跳过 XDR 流中的下一个记录

参数:

  • xdrs : 指向要操作的 XDR 数据结构的指针

返回值:

  • 如果返回 -1,则表示发生了错误,可能是由于输入参数无效而导致的。
  • 如果返回 0,则表示函数成功地跳过了当前记录,并且将新纪录的开头设置为下一条记录的字节偏移量。
  • 如果返回 1,则表示到达文件末尾,因此无法跳过更多的记录。

7.2 演示示例

#include <rpc/rpc.h>

int main()
{
    // 创建 XDR 流
    XDR xdrs;
    char buffer[1024];
    xdrmem_create(&xdrs, buffer, sizeof(buffer), XDR_ENCODE);

    // 写入两个记录
    int record1 = 1234;
    int record2 = 5678;
    xdr_int(&xdrs, &record1);
    xdrrec_endofrecord(&xdrs, TRUE);
    xdr_int(&xdrs, &record2);
    xdrrec_endofrecord(&xdrs, TRUE);

    // 打印第一条记录
    printf("Record 1: %d\n", record1);

    // 跳过第二个记录
    xdrrec_skiprecord(&xdrs);

    // 读取第三个记录(不存在)
    int record3 = 0;
    if (xdr_int(&xdrs, &record3)) 
    {
        printf("Record 3: %d\n", record3);
    } 
    else 
    {
        printf("No third record found.\n");
    }

    return 0;
}

8. xdrrec_skipopaque

8.1 函数说明

函数声明 函数功能
bool_t xdrrec_skipopaque(XDR *xdrs, uint32_t cnt); 用于编码或解码空值【void类型】

参数:

  • xdrs : 指向要操作的 XDR 数据结构的指针
  • cnt : 要跳过的不透明数据的字节数

返回值:

  • 如果成功跳过指定的字节数,则返回 TRUE
  • 否则返回 FALSE

8.2 演示示例

#include <stdio.h>
#include <rpc/xdr.h>

#define MAX_BUF_SIZE 1024

int main() 
{
    char buffer[MAX_BUF_SIZE] = "Hello, world!";
    XDR xdr;
    xdrmem_create(&xdr, buffer, MAX_BUF_SIZE, XDR_ENCODE);

    // 写入字符串到 XDR 流
    if (!xdr_string(&xdr, &buffer, MAX_BUF_SIZE)) 
    {
        fprintf(stderr, "Failed to serialize string.\n");
        return 1;
    }

    // 跳过前 6 个字节
    if (!xdrrec_skipopaque(&xdr, 6)) 
    {
        fprintf(stderr, "Failed to skip bytes.\n");
        return 1;
    }

    // 读取剩下的部分
    char output[MAX_BUF_SIZE];
    if (!xdr_string(&xdr, &output, MAX_BUF_SIZE)) 
    {
        fprintf(stderr, "Failed to deserialize string.\n");
        return 1;
    }

    printf("Result: %s\n", output);  // "world!"

    return 0;
}

9. xdrstdio_create

9.1 函数说明

函数声明 函数功能
XDR *xdrstdio_create(FILE *file, enum xdr_op op); 用于创建一个 XDR 流,并将其与标准输入和输出关联起来

参数:

  • file :XDR 流关联的文件指针
  • op : 指定 XDR 流的操作类型。可选值包括 XDR_ENCODEXDR_DECODEXDR_FREE

返回值:

  • 如果创建成功,则返回一个指向 XDR 结构体的指针;
  • 如果调用失败,则返回 NULL

9.2 演示示例

#include <stdio.h>
#include <rpc/xdr.h>

int main() 
{
    FILE *stream;
    XDR *xdrs;
    int i = 1234567890;
    int o;

    stream = fopen("test.xdr", "w");
    if (!stream) 
    {
        perror("fopen failed");
        exit(1);
    }
    
    xdrs = xdrstdio_create(stream, XDR_ENCODE);
    if (!xdrs) 
    {
        fprintf(stderr, "could not create XDR stream\n");
        fclose(stream);
        exit(1);
    }

    if (xdr_int(xdrs, &i) == FALSE) 
    {
        fprintf(stderr, "could not encode integer\n");
        exit(1);
    }

    xdr_destroy(xdrs);

    fclose(stream);

    stream = fopen("test.xdr", "r");
    if (!stream) 
    {
        perror("fopen failed");
        exit(1);
    }

    xdrs = xdrstdio_create(stream, XDR_DECODE);
    if (!xdrs) 
    {
        fprintf(stderr, "could not create XDR stream\n");
        fclose(stream);
        exit(1);
    }

    if (xdr_int(xdrs, &o) == FALSE) 
    {
        fprintf(stderr, "could not decode integer\n");
        exit(1);
    }

    printf("i = %d, o = %d\n", i, o);

    xdr_destroy(xdrs);

    fclose(stream);

    return 0;
}

10. xdrstdio_destroy

10.1 函数说明

函数声明 函数功能
void xdrstdio_destroy(XDR *xdrs); 释放由 xdrstdio_create 创建的 XDR 流所占用的资源

参数:

  • xdrs : 指向要销毁的 XDR 流的指针

10.2 演示示例

#include <stdio.h>
#include <rpc/xdr.h>

int main() 
{
    // 打开文件以供读取/写入
    FILE *file = fopen("data.txt", "w");

    // 创建 XDR 流对象
    XDR xdrs;
    xdrstdio_create(&xdrs, file, XDR_ENCODE);

    // 在这里进行编码操作...

    // 销毁 XDR 流对象
    xdrstdio_destroy(&xdrs);

    // 关闭文件
    fclose(file);

    return 0;
}

11. xdrstdio_getpos

11.1 函数说明

函数声明 函数功能
int xdrstdio_getpos(XDR *xdrs, fpos_t* pos); 用于获取 XDR stream 当前的位置

参数:

  • xdrs : 指向 XDR 结构体的指针,表示正在操作的流
  • pos : 指向 fpos_t 变量的指针,表示将要保存当前位置的变量

返回值:

  • 如果成功获取位置信息,则返回 0
  • 如果出现错误,则返回 非 0

11.2 演示示例

#include <rpc/xdr.h>
#include <stdio.h>

int main()
{
    XDR xdrs;
    FILE *fp;
    fpos_t pos;

    fp = fopen("test.xdr", "rb");
    if (fp == NULL) {
        perror("Cannot open file");
        return -1;
    }

    // 初始化 XDR 流
    xdrstdio_create(&xdrs, fp, XDR_DECODE);

    // 获取当前位置
    if (xdrstdio_getpos(&xdrs, &pos)) {
        perror("Get position failed");
        return -1;
    }
    printf("Current position: %ld\n", (long)pos);

    // do something...

    // 回到之前的位置
    if(fsetpos(fp, &pos)) {
        perror("Set position failed");
        return -1;
    }

    // 销毁 XDR 流
    xdr_destroy(&xdrs);

    fclose(fp);

    return 0;
}

12. xdrstdio_setpos

12.1 函数说明

函数声明 函数功能
int xdrstdio_setpos(XDR *xdrs, int pos); 设置由 xdrs 指向的 XDR 流的当前位置

参数:

  • xdrs : 指向将要被调整位置的 XDR 流的指针
  • pos : 新位置的偏移量

返回值:

  • 如果成功设置位置信息,则返回 0
  • 如果出现错误,则返回 非 0

12.2 演示示例

#include <rpc/xdr.h>
#include <stdio.h>

int main() 
{
    XDR xdrs;
    FILE *f = fopen("data.xdr", "r");
    xdrstdio_create(&xdrs, f, XDR_DECODE);

    // 记录当前位置
    int old_pos = xdr_getpos(&xdrs);

    // 将位置调整到第二个元素开始
    xdrstdio_setpos(&xdrs, old_pos + sizeof(int));

    int b;
    if (!xdr_int(&xdrs, &b)) 
    {
        fprintf(stderr, "Failed to decode second element.\n");
        exit(1);
    }
    printf("Second element: %d\n", b);

    xdr_destroy(&xdrs);
    fclose(f);
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言函数大全-- x 开头的函数(5) 的相关文章

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

    w 开头的函数 1 1 wcscat 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 wcschr 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 wcscmp 3 1 函数说明 3 2 演示示例 3 3 运行结果 4
  • C语言函数大全-- _w 开头的函数(4)

    w 开头的函数 4 1 wstrtime 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 wstrtime s 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 wsetlocale 3 1 函数说明 3 2 演示示例 3
  • C语言函数大全-- p 开头的函数

    p 开头的函数 1 perror 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 pieslice 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 pow powf powl 3 1 函数说明 3 2 演示示例 3 3
  • C语言函数大全-- l 开头的 Linux 内核函数(链表管理函数)

    l 开头的 Linux 内核函数 链表管理函数 1 list add list add tail 1 1 函数说明 1 2 演示示例 2 list cut before list cut position 2 1 函数说明 2 2 演示示例
  • C语言函数大全-- s 开头的函数(3)

    s 开头的函数 3 1 sleep 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 sopen 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 sound 3 1 函数说明 3 2 演示示例 4 spawnl 4 1 函
  • C语言函数大全-- s 开头的函数(2)

    s 开头的函数 2 1 setlinestyle 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 setmem 2 1 函数说明 2 2 演示示例 3 setmode 3 1 函数说明 3 2 演示示例 3 3 运行结果 4 se
  • C语言函数大全-- z 开头的函数

    z 开头的函数 1 zalloc 1 1 函数说明 1 2 演示示例 2 zcalloc 2 1 函数说明 2 2 演示示例 3 zcfree 3 1 函数说明 3 2 演示示例 4 zclearerr 4 1 函数说明 4 2 演示示例
  • C语言函数大全-- x 开头的函数(5)

    x 开头的函数 5 1 xdrmem create 1 1 函数说明 1 2 演示示例 2 xdrmem destroy 2 1 函数说明 2 2 演示示例 3 xdrrec create 3 1 函数说明 3 2 演示示例 4 xdrre
  • C语言函数大全-- u 开头的函数

    u 开头的函数 1 ultoa 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 ungetc 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 ungetch 3 1 函数说明 3 2 演示示例 3 3 运行结果 4 un
  • C语言函数大全-- t 开头的函数

    t 开头的函数 1 tan tanf tanl 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 tanh tanhf tanhl 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 tell 3 1 函数说明 3 2 演示示
  • C语言函数大全-- v 开头的函数

    v 开头的函数 1 va start 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 va arg 2 1 函数说明 2 2 演示示例 3 va copy 3 1 函数说明 3 2 演示示例 4 va end 4 1 函数说明 4
  • C语言函数大全--e开头的函数

    e开头的函数 1 ecvt 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 ellipse 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 eof 3 1 函数说明 3 2 演示示例 3 3 运行结果 4 execl 4
  • C语言函数大全--h开头的函数

    h开头的函数或宏 1 hypot hypotf hypotl 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 HUGE VAL HUGE VALF HUGE VALL 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 ha
  • C语言函数大全-- x 开头的函数(1)

    x 开头的函数 1 1 xdr accepted reply 1 1 函数说明 1 2 演示示例 1 2 1 accepted reply 1 2 2 Test c 2 xdr array 2 1 函数说明 2 2 演示示例 3 xdr a
  • C语言函数大全-- k 开头的函数

    k 开头的函数 1 kcalloc 1 1 函数说明 1 2 演示示例 2 kbhit 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 keep 3 1 函数说明 3 2 演示示例 4 kernel thread 4 1 函数说明
  • C语言函数大全-- r 开头的函数

    r 开头的函数 1 raise 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 rand 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 read 3 1 函数说明 3 2 演示示例 3 3 运行结果 4 realloc
  • C语言函数大全-- y 开头的函数

    y 开头的函数 1 yperror 1 1 函数说明 1 2 演示示例 2 yp match 2 1 函数说明 2 2 演示示例 3 y0 零阶第二类贝塞尔函数 3 1 函数说明 3 2 演示示例 3 3 运行结果 4 y1 一阶第二类贝塞
  • C语言函数大全-- i 开头的函数

    i 开头的函数 1 imagesize 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 initgraph 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 inport 3 1 函数说明 3 2 演示示例 4 insli
  • C语言函数大全-- s 开头的函数(4)

    s 开头的函数 4 1 strdup 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 stricmp 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 strerror 3 1 函数说明 3 2 演示示例 3 3 运行结果
  • C语言函数大全-- x 开头的函数(4)

    x 开头的函数 4 1 xdr struct 1 1 函数说明 1 2 演示示例 2 xdr u char 2 1 函数说明 2 2 演示示例 3 xdr u hyper 3 1 函数说明 3 2 演示示例 4 xdr u int 4 1

随机推荐

  • java/php/net/python会员健身系统管理设计

    本系统带文档lw万字以上 答辩PPT 查重 如果这个题目不合适 可以去我上传的资源里面找题目 找不到的话 评论留下题目 或者站内私信我 有时间看到机会给您发 本课题要求实现一套会员健身系统管理 系统功能包括会员 个人资料管理 教练信息管理
  • 使用 VS2022 配置 QT 开发环境的步骤

    使用 VS2022 配置 QT 开发环境的步骤 QT 是一个跨平台的 C GUI 库 可以在 Windows Mac Linux 等操作系统上运行 在 Visual Studio 2022 中配置 QT 的开发环境 可以让开发者在 Wind
  • Label Assignment

    前言 今天在研究四点模型的时候 了解到一个新概念 Label Assignment 记录一下 Label assignment 参考文档 目标检测中的Label Assignment Label assignment 主要是指检测算法在训练
  • 文件翻转教学python

    目录 第1关 读文件全部内容到一个字符串 第2关 读文件前n个字符 第3关 逐行读取并输出文件内容 第4关 读取文件到列表中 第5关 读取文件中的数据到二维列表 第6关 将唐诗写入到文件中 第1关 读文件全部内容到一个字符串 任务描述 本关
  • OpenGL学习例程精析(3d纹理)

    OpenGL学习例程精析 3d纹理 代码分析 glPixelStorei 完整代码 最终效果 代码分析 3d纹理的配置要比2d纹理复杂一些 glPixelStorei glPixelStorei GL UNPACK ALIGNMENT 1
  • eclipse的安装和汉化

    eclipse是一个可扩展的开发平台 受到开发人员的欢迎与好评 其安装和汉化的步骤如下 在本文中涉及的网址都是官方网址 确保下载软件的安全 纯净 1 下载jdk1 8 0并安装 网址 http www oracle com technetw
  • 响应式数据大屏构造

    数据大屏构建 需求 UI 实现响应式数据大屏 适配各种屏幕 不允许出现滚动条 方案 rem 实现原理 根据屏幕宽度 计算1rem的宽度 配置根元素的font size 所有的像素单位按照rem计算 优点 实现响应式 根据设计稿和VW的宽度实
  • 海量图片曝光百度新家“搜索框”大厦

    今天陪朋友到百度办事 有幸参观了百度的新办公大楼 搜索框大厦 大厦特别漂亮 内部设计特别炫 功能更是酷啊 海量图片第一时间与大家分享一下 刚到上地环岛 远远就看到气势宏伟的大厦 非常醒目 波浪形的玻璃外墙 相当气派 无论从正面 侧面还是背面
  • fetch使用

    fetch基本使用方法 1 fetch与ajax作用相同 发送请求 2 ajax是使用XMLHttpRequest对象来请求数据 因此需要先new XMLHttpRequest 然后连接发送接收 3 fetch是一个方法 fetch 地址
  • vue中点击按钮关闭当前页面踩坑记录

    vue中关闭当前页面踩坑记录 当前页面直接使用window close不行 必须是新窗口才能使用window close 所以要router跳转时打开新窗口才能关闭 直接使用 不行 window close 先使用下面跳转对应页面 let
  • windows下两种方法通过cmd进入指定目录

    方法一 通过cmd cd命令进入 相同盘符下的目录可直接使用cd 但是windows下不同于linux 不能直接跨盘符cd进入目录 例如 从C盘进入E盘下面的目录 需要两行命令 跨盘符 跨盘符目录 先后顺序都可以 先输入跨盘符目录 再输入跨
  • C语言求班级平均分案例讲解

    我们先看例题 统计3个班成绩情况 每个班有5个同学 求出所有班级的平均分以及各个班级的平均分 从键盘输入成绩 思路分析 1 我们定义一个3行5列的二维数组用来存放学生的成绩 1行表示1个班的学生成绩 总共3行 可以存放3个班的成绩 每行有5
  • 菜鸟视角的openwrt(一) 初识openwrt

    作为一只菜鸟 为了熟悉openwrt系统 看了很多前辈的文章 因为写作的角度或者说目标人群不同 侧重点也不同 学到的知识零零碎碎 等积累的知识多了 回头再来看 才发现 原来如此 原来作者已经帮我们总结好了 这篇文章对老鸟来说 可以直接忽略
  • 二分模板——数的范围

    789 数的范围 先用二分求出x的左边界 a mid gt x mid在x的右边 所以右边界变为mid 即 if a mid gt x r mid else l mid 1 根据模板得出mid mid l r gt gt 1 若得出的左边界
  • stm32+DS1302+TM1638驱动程序

    TM1638数码管显示驱动程序 参考 1 TM1638与STM32连接 1 1 硬件连接 Vcc 电源 GND 电源地 STB PA0 CLK PA1 DIO PA2 1 2 驱动程序 TM1638 c文件 Program Assignme
  • MySQL基础入门语法

    一 数据库基础概念 1 1 数据库定义 数据库 存储数据的软件 长期存储在计算机内 有组织的数据集合 表 数据库存储数据的基本单位 数据按照分类存储到不同的表中 能够高效的的查询其中数据 对于测试工作 如果项目页面没有实现 需要校验数据 则
  • 数据结构之常见排序算法

    文章目录 1 排序概念 2 10种排序比较 3 排序算法 3 1直接插入排序 元素越有序 越高效 3 2希尔排序序 缩小增量排序 3 3直接选择排序 3 4堆排序 3 5冒泡排序 3 6快速排序 递归实现 无序使用最好 3 6 1挖坑法 建
  • 如何使用云桌面进行开发?

    云桌面又称桌面虚拟化 云电脑 是替代传统电脑的一种新模式 采用云桌面后 用户无需再购买电脑主机 主机所包含的CPU 内存 硬盘等组件全部在后端的服务器中虚拟出来 为什么要用云桌面进行开发 采用了云桌面 大量的终端电脑都可以统一集中管理 系统
  • vs2015写的程序,在vs2019下无法运行,报错代码为-1073741701

    vs2015写的程序 在vs2019下无法运行 报错代码为 1073741701 1 现象 2 vs2019下的配置 3 VS015下配置 4 在VS015下运行结果 5 解决 vs2019能够完美的向下兼容vs2017 vs2015的项目
  • C语言函数大全-- x 开头的函数(5)

    x 开头的函数 5 1 xdrmem create 1 1 函数说明 1 2 演示示例 2 xdrmem destroy 2 1 函数说明 2 2 演示示例 3 xdrrec create 3 1 函数说明 3 2 演示示例 4 xdrre