【高级语言程序设计(一)】第 10 章:文件

目录

一、文件概述

(1)文件定义

(2)文件命名

(3)文件分类

① 按照文件的内容划分

② 按照文件的组织形式划分

③ 按照文件的存储形式划分

④ 按照文件的存储介质划分

(4)文件存取方式

(5)文件系统 

二、文件的打开和关闭函数

(1)文件打开函数

①  库函数 exit() 的具体说明

② 文件使用中各字符的含义

③ 文件的使用方式说明

(2)文件关闭函数

(3)标准设备文件的打开和关闭 

① 文件的打开与关闭

② 文件的打开(fopen 函数)

③ 文件的关闭(fclose 函数)

三、文件的读/写函数

(1)文件尾测试函数

(2)写字符函数 fputc()

(3)读字符函数 fgetc()

① fputc 函数(putc 函数)

② fgetc 函数(getc 函数)

③ feof 函数

(4)写字符串函数 fputs()

(5)读字符串函数 fgets()

(6)写数据块函数 fwrite()

(7)读数据块函数 fread()

(8)格式化写函数 fprintf()

(9)格式化读函数 fscanf()

四、文件的定位函数

(1)文件指针复位函数

① rewind 函数

(2)文件随机定位函数

(3)文件随机定位函数



一、文件概述

C 语言将文件看做是由一个一个的字符(ASCII码文件)字节(二进制文件)组成的,这种文件称为流式文件。 


(1)文件定义

  • 文件是存储在外部存储介质上的数据集合,这些数据的类型可以是整型、实型、字符型、字符串或结构体类型等。
  • 目前,外部存储介质主要是磁盘,存储在磁盘上的文件称为“磁盘文件” 。

(2)文件命名

为了标识磁盘上的不同文件,每个磁盘文件都必须有一个文件名,其一般组成为:
盘符:路径\文件主名[.扩展名]
  • 其中,盘符表示文件所在的磁盘,可以是 A、B、C 和 D 等。
  • 路径是由目录序列组成,目录之间的分隔符为 “\” ,需要注意的是,如果路径出现在字符串中,C 语言规定其中的符号 “\” 需要写成转义字符 “\\” 。
  • 文件主名和扩展名均是由字母和数字等字符组成的。
C 语言中,常见的扩展名:
  • c:C 源程序文件
  • obj:C 源程序经过编译后生成的目标文件
  • exe:目标文件经过链接后生成的可执行文件
  • 一般地,数据文件的扩展名常用 dat ,文本文件的扩展名常用 txt

(3)文件分类

① 按照文件的内容划分

可分为程序文件数据文件

  • 程序文件:又可以分为源文件目标文件可执行文件

② 按照文件的组织形式划分

可分为顺序存取文件随机存取文件
  • 顺序存取文件:简称为 “顺序文件” ,数据写入文件的方式是后输入的数据放在以前输入数据的后面,按照数据的先后次序一个接一个地存放。
  • 随机存取文件:简称为 “随机文件” ,每个数据在磁盘中所占用的长度都相同。

③ 按照文件的存储形式划分

可分为文本文件二进制文件
  • 文本文件:文本文件中数据转换为对应的ASCⅡ码来存放,每字节存储一个字符,因此便于对字符逐一进行处理。
  • 二进制文件:二进制文件中数据按照其二进制形式来存放,即把内存中的数据,原样输出到磁盘文件中。

④ 按照文件的存储介质划分

可以分为普通文件设备文件
  • 普通文件:即存储介质文件(磁盘、磁带等)
  • 设备文件:即非存储介质文件(键盘、 显示器和打印机等)

(4)文件存取方式

主要包括顺序存取随机存取两种
  • 顺序存取是自上而下逐一地存取文件的内容。保存数据时,将数据附加到文件的尾部。顺序存取方式常用于文本文件,被存取的文件则称为顺序文件。
  • 随机存取是以一个完整的单位进行数据的读取和写入。随机存取方式常用于二进制文件,被存取的文件则称为随机文件。

(5)文件系统 

C 语言使用的文件系统分为缓冲文件系统(标准I/O)非缓冲文件系统(系统I/O)
  • 缓冲文件系统:是指系统自动地为每个正在使用的文件在内存开辟一个缓冲区。从内存向磁盘输出数据时,必须首先输出到缓冲区。待缓冲区装满后,再一起输出到磁盘文件。从磁盘文件文件向内存读入数据时,恰好相反,即首先将一批数据读入到缓冲区,再从缓冲区将数据逐一送到程序数据区。

  • 非缓冲文件系统:是指用户在程序中为每个文件设定缓冲区。


二、文件的打开和关闭函数

(1)文件打开函数

【函数首部】 FILE  *fopen(char  *filename, char  *mode)
【参数】
  1. filename 字符型指针,所指向的字符串是要打开的 “文件名” 
  2. mode 字符型指针,所指向的字符串是对打开文件规定的 “使用方式” 
  3. “使用方式” 是由 r、w、a、t、b 和 + 六个字符组成:
  • 如果使用方式中有 b 字符,则针对的是二进制文件
  • 如果使用方式中没有 b 字符,则针对的是文本文件
  • 如果使用 r 打开一个文件时,则该文件必须已经存在
【功能】按 mode 指定的 “使用方式” 打开 filename 指定的 “文件名” 对应的文件,同时自动地为该文件分配一个内存缓冲区。
【返回值】
  1. 若打开文件正确,则返回一个 “文件型” 指针,程序通过该指针获得文件信息,访问文件并进行各种操作。
  2. 若打开文件出错,则返回值为NULL,其中 NULL 是在头文件 stdio.h 中定义的符号常量,其值为 0 ,含义是 “空” 。

①  库函数 exit() 的具体说明

【函数首部】 void exit([程序状态值])
【功能】关闭已经打开的所有文件,结束程序运行返回操作系统,并将 “程序状态值” 返回给操作系统
  • 当 “程序状态值” 为 0 时,表示程序正常退出
  • 当 “程序状态值” 为非 0 时,表示程序出错退出

② 文件使用中各字符的含义

字符含义
r (read)
w (write)
a (append)追加
t (text)文本文件(可省略不写)
b (binary)二进制文件
+读和写

③ 文件的使用方式说明

文本类型字符使用方式说明
文本文件"r"只读以只读方式打开一个已经存在的文本文件,只允许读取数据,不允许写入数据
"r+"读/写以读/写方式打开一个已经存在的文本文件,允许读取和写入数据
"w"只写以只写方式打开一个文本文件,只允许写入数据,不允许读取数据:
① 若文件已经存在,则删去原文件的所有内容,然后写入数据
② 若文件不存在,则自动创建一个新文件后写入数据
"w+"读/写以读/写方式打开一个文本文件,允许读取和写入数据:
① 若文件已经存在,则删去原文件的所有内容,然后写入数据
② 若文件不存在,则自动创建一个新文件后写入数据
"a"追加以追加的方式打开一个已经存在的文本文件,只允许写入数据并追加到原文件尾
"a+"读/写以读/写方式打开一个文本文件,允许读取数据,也允许写入数据到文件尾:
若文件不存在,则自动创建一个新文件
二进制文件"rb"只读以只读方式打开一个已经存在的二进制文件,只允许读取数据,不允许写入数据
"rb+"读/写以读/写方式打开一个已经存在的二进制文件,允许读取和写入数据
"wb"只写以只写方式打开一个二进制文件,只允许写入数据,不允许读取数据:
① 若文件已经存在,则删去原文件的所有内容,然后写入数据
② 若文件不存在,则自动创建一个新文件后写入数据
"wb+"读/写以读/写方式打开一个二进制文件,允许读取和写入数据:
① 若文件已经存在,则删去原文件的所有内容,然后写入数据
② 若文件不存在,则自动创建一个新文件后写入数据
"ab"追加以追加的方式打开一个已经存在的二进制文件,只允许写入数据并追加到原文件尾
"ab+"读/写以读/写方式打开一个二进制文件,允许读取数据,也允许写入数据到文件尾:
若文件不存在,则自动创建一个新文件

(2)文件关闭函数

【函数首部】 int fclose(FILE *fp)
【参数】fp 文件型指针,通过函数 fopen() 获得,且指向一个已经打开的文件
【功能】关闭 fp 所指向的文件,同时自动释放分配给该文件的内存缓冲区
【返回值】若正确关闭指定的文件,则返回 0 ;否则返回非 0 

(3)标准设备文件的打开和关闭 

程序开始运行时,系统自动打开三种标准设备文件,并分别定义了相应的文件型指针, 其中:
  • stdin 指向标准输入(通常为键盘):如果程序指定要从 stdin 所指向的文件输入数据,即从键盘输入数据。
  • stdout 指向标准输出(通常为显示器):如果程序指定要向 stdout 所指向的文件输出数据,即向显示器输出数据。
  • stderr 指向标准错误输出(通常为显示器):三种标准设备文件使用后,不必关闭,因为系统退出时将自动关闭。

① 文件的打开与关闭

文件操作用库函数实现包含在 stdio.h 

文件使用方式 打开文件  →  文件读 / 写  →  关闭文件
系统 自动 打开和关闭三个 标准文件
  • 标准输入 ------------- 键盘              stdin
  • 标准输出 ------------- 显示器           stdout
  • 标准出错输出 ------- 显示器           stderr

② 文件的打开(fopen 函数)

【函数原型】 FILE  * fopen (char  * name , char  * mode )
【调用方式】fopen(" 文件名 " , " 使用文件方式 ")
【示例】
FILE *fp;
fp=fopen("d:\\user\\myfile.txt", "r");

【返回值】正常打开,返回指向文件结构体的指针;打开失败,返回 NULL

FILE *fp;
fp=fopen("aa.c", "w");
if(fp==NULL)
{
  printf("File open error!\n");
  exit(0);   /* 关闭所有文件终止调用 */
}

【注意】

  • r读方式
  • w写方式
  • a追加方式
  • rb / wb / ab二进制方式
  • +既可读又可写
字符处理方式指定文件不存在文件存在
r只读出错正常
w只写建立新文件原内容丢失
a追加建立新文件在原内容后追加
r+/w+读写出错正常

③ 文件的关闭(fclose 函数)

【作用】 使文件指针变量与文件 “脱钩” ,释放文件结构体和文件指针
FILE *fp;
fp=fopen("a.txt", "r");
fclose(fp);

【返回值】用于表示文件是否被正确地关闭,如果文件顺利关闭,该值0,否则为 -1(EOF)

  • 返回值可以用 ferror 函数测试


三、文件的读/写函数

(1)文件尾测试函数

  • 文件执行读操作时,通常使用 feof() 函数来判断是否到达文件尾
  • 如果遇到文件尾,则不能继续读取数据
【函数首部】 int  feof(FILE  *fp)
【参数】fp 文件型指针,通过 fopen() 函数获得,指向一个已经打开的文件
【功能】判断 fp 所指向的文件是否到达文件尾
【返回值】若遇到文件尾,则返回值是非 0 ;否则,返回值是 0 
  • feof() 函数同时适用于文本文件和二进制文件
  • 对二进制文件执行读操作时,必须使用 feof() 函数来判断是否到达文件尾
  • 对文本文件执行读操作时,如果遇到文件尾,则返回一个文件结束标志EOF(EOF 是一个符号常量,其值在头文件 stdio.h 中被定义为 -1,含义是 “文件尾”

(2)写字符函数 fputc()

【函数首部】int  fputc(char  ch, FILE  *fp)
【参数】
  • ch 写到文件中的字符,既可以是字符常量,也可以是字符变量或字符表达式
  • fp 文件型指针,通过函数 fopen() 获得,且指向一个已经打开的文件
【功能】将 ch 中的字符写到 fp 所指向文件的当前位置,同时将读/写位置指针后移 1 字节,即指向下一个读/写位置
【返回值】若正确写入字符,则返回刚写入到文件的字符;否则,返回 EOF
  • 本函数主要用于文本文件,也可以用于二进制文件
  • 对于文本文件,写入的是单个字符
  • 对于二进制文件,写入的是 1 字节数据。当正确地写入一个字符或 1 字节数据后,文件内部的读/写位置指针会后移 1 字节,即指向下一个读/写位置

(3)读字符函数 fgetc()

【函数首部】 int  fgetc(FILE  *fp)
【参数】fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的文件
【功能】从 fp 所指向文件的当前位置读取一个字符,同时将读/写位置指针后移 1 字节,即指向下一个读/写位置
【返回值】若正确读取字符,则返回读取的单个字符;否则,返回 EOF
文件的读写: 文件打开之后,就可以对它进行读与写的操作了
读/写文件中的 一个字符
  • fputc 函数(putc 函数)
  • fgetc 函数(getc 函数)
  • feof 函数

① fputc 函数(putc 函数)

【函数原型】 int  fputc(int c,  FILE  *fp)
  • c :字符常量或变量
  • *fb :文件指针变量
【功能】把一字节代码  写入  fp  指向的文件中
【返值】 正常,返回  c ;  出错,为  EOF -1

② fgetc 函数(getc 函数)

【函数原型】 int  fgetc(FILE  *fp)
  • *fb :文件指针变量
【功能】从  fp  指向的文件中读取一字节代码
【返值】 返回读到的代码值 读到文件尾或出错为  EOF -1

③ feof 函数

【函数原型】 feof(fp)
【功能】 对于二进制文件读取时判断文件是否结束
【返值】结束  -1 ;反之  0
/* 示例:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个 “#” 为止 */
#include <stdio.h>
#include <stdlid.h>
void main()
{
  FILE *fp;
  char ch , filename[10];
  scanf("%s", filename);
  if((fp=fopen(filename, "w"))==NULL)
     { 
        printf("cannot open file\n");
        exit(0); 
     }   /* 终止程序 */
  ch=getchar();   /* 接收执行scanf时最后输入的回车符 */
  ch=getchar();   /* 第一个输入的字符被赋给变量ch */
  while(ch!='#')
     { 
        fputc(ch, fp);   /* 字符被写入filename表示的文件中 */
        putchar(ch);    /* 字符被输出到显示器 */
        ch=getchar();
      }
   putchar(10);   /* 向屏幕输出一个换行符 */
   fclose(fp);
}   /* 关闭文件 */

(4)写字符串函数 fputs()

【函数首部】 int  fputs(char  *str, FILE  *fp)
【参数】
  • str 字符型指针,可以是一个字符常量,或字符数组名,或字符指针变量名
  • fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的文件
【功能】
  • 把 str 所指向的一个字符串,舍去字符串结束标志符 ‘\0’ 后写入 fp 所指向文件的当前位置
  • 同时将读/写位置指针向后移动 strlen(字符串长度)字节
【返回值】若正确写入字符串,则返回写入文件的实际字符数;否则,返回 EOF

(5)读字符串函数 fgets()

【函数首部】 char  *fgets(char  *str, int length, FILE  *fp)
【参数】
  • str 字符型指针,可以是一个字符数组名,或字符指针变量名
  • length 整型,可以是整型常量、变量或表达式
  • fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的文件
【功能】
  • 从 fp 所指向文件的当前位置读入一个字符串,即读取 length-1 个字符,并在尾部自动补充一个字符串结束标志符 ‘\0’ ,组成字符串后存入 str 所指定的内存区;同时,将读/写位置指针后移实际读出的字符个数字节。
  • 如果在读取前 n-1 个字符中遇到文件尾 EOF 或回车,则读取结束,并在读取的字符后面补充一个字符串结束标志符 ‘\0’ 组成字符串。
【返回值】若正确读取字符串,则返回 str 对应的地址;否则,返回 NULL
/* 示例:从键盘读入字符串存入文件,再从文件读回显示 */
#include<stdio.h>
void main()
{
  FILE *fp;
  char string[81];
  if((fp=fopen("file.txt", "w"))==NULL)
     { 
        printf("cann't open file"); exit(0); 
     }
  while(strlen(gets(string))>0)
     { 
        fputs(string, fp);
        fputs("\n", fp); 
     }
  fclose(fp);
  if((fp=fopen("file.txt", "r"))==NULL)
     { 
        printf("cann't open file"); exit(0); 
     }
  while(fgets(string, 81, fp)!=NULL)
     fputs(string, stdout);
  fclose(fp);
}

(6)写数据块函数 fwrite()

【函数首部】 int  fwrite(void  *buffer, int size, int count, FILE  *fp)
【参数】
  • buffer 字符型指针,存放写入文件数据类型的起始地址,可以是存放数据的变量地址或数组首地址,也可以是指向某个变量或数组的指针变量。
  • size 无符号整数,可以是整型常量、变量或表达式,表示从文件写入文件的每个数据所占用的字节数,通常使用表达式 sizeof(数据类型符)。
  • count 无符号整数,可以是整型常量、变量或表达式,表示要写入文件的数据的个数。
  • fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的可写文件。
【功能】
  • 将从 buffer 开始的 count 个数据(每个数据占用 size 字节)一次性写入 fp 所指向的文件
  • 同时,将读/写位置指针后移 size*count 字节
【返回值】若正确写入数据块,则返回值是 count;否则,返回值是 0

(7)读数据块函数 fread()

【函数首部】 int  fread(void  *buffer, int size, int count, FILE  *fp)
【参数】
  • buffer 字符型指针,存放从文件中读取数据的起始地址,可以是存放数据的变量地址或数组首地址,也可以是指向某个变量或数组的指针变量
  • size 无符号整数,可以是整型常量、变量或表达式,表示从文件读取的每个数据所占用的字节数,通常使用表达式 sizeof(数据类型符)
  • count 无符号整数,可以是整型常量、变量或表达式,表示从文件中读取数据的个数
  • fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的可读文件
【功能】
  • 从 fp 所指向文件的当前位置开始,一次性读入 count 个数据(每个数据占用 size 字节),并将读入的数据存放到以 buffer 为首地址的内存区
  • 同时,将读/写位置指针后移 size*count字节
【返回值】若正确读取数据块,则返回值是 count;否则,返回值是 0
【注意】用 fread() 和 fwrite() 函数进行数据读/写时,必须采用二进制

(8)格式化写函数 fprintf()

【函数首部】int  fprintf(FILE  *fp, char  *format[, argument…])
【参数】
  • fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的可写文件
  • format 格式字符串
  • argument 输出列表
【功能】将 argument 的值以 format 指定的格式写入 fp 所指向的文件
【返回值】若正确写入数据,则返回实际输出字符的个数;否则,返回值是负数

(9)格式化读函数 fscanf()

【函数首部】 int  fscanf(FILE  *fp, char  *format[, argument…])
【参数】
  • fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的可读文件
  • format 格式字符串
  • argument 输入列表
【功能】根据 format 指定的格式从 fp 所指向文件中读取数据保存至 argument 所指向的内存单元
【返回值】若正确读入数据,则返回值是已读入的数据个数;否则,返回值是 EOF


四、文件的定位函数

(1)文件指针复位函数

【函数首部】 int  rewind(FILE  *fp)
【参数】fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的文件
【功能】将 fp 所指向文件的位置指针 重置到文件头 ,即把文件的位置指针重新定位到 fp 所指向文件的起始位置
【返回值】 若执行正常,返回值是 0 ;否则,返回值是非 0

① rewind 函数

【函数原型】 void  rewind(FILE  *fp)
【功能】重置文件位置指针到文件开头
【返回值】
/* 示例:对一个磁盘文件进行显示和复制两次操作 */
#include <stdio.h>
void main()
{
  FILE *fp1,
  *fp2;
  fp1=fopen("c:\\c\\user\\ch4.c", "r");
  fp2=fopen("d:\\c\\user\\ch41.c", "w");
  while(!feof(fp1)) putchar(fgetc(fp1));
  rewind(fp1);
  while(!feof(fp1)) putc(fgetc(fp1), fp2);
  fclose(fp1);  fclose(fp2);
}

(2)文件随机定位函数

文件随机定位函数:
文件随机定位函数 fseek() 可以将文件的位置指针移动到文件中的任何一个地方,一般用于二进制。
【函数首部】 int  fseek(FILE  *fp, long offset, int origin)
【参数】
  • fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的文件
  • offset 长整型数据,表示位移量,是从 origin 为起始位置,向后(当位移量>0时)或向前(当位移量<0时)移动的字节数
  • origin 表示起始位置

(3)文件随机定位函数

【功能】将 fp 所指向文件的位置指针从 origin 指定的起始位置移动 offset 所指定
的字节数,改变文件位置指针的位置,即指向新的位置。
【返回值】若定位成功,则返回值是 0;否则,返回值是非 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23208.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

系统集成项目管理工程师 下午 真题 及考点(2019年上半年)

文章目录 一&#xff1a;第10章 项目质量管理&#xff0c;规划质量管理输出&#xff0c;质量成本法&#xff08;一致性成本【预防、评价】 和 非一致性成本【内部失败、外部失败】&#xff09;&#xff0c;七种工具二&#xff1a;第8章 项目进度管理&#xff0c;总浮动时间&…

26 VueComponent 其他属性的更新

前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 测试用例 比如这里看一下 class 的更新 测试用例如下, 增加 topClazz …

4、js - 闭包

1、闭包的概念 闭包&#xff1a;函数嵌套函数&#xff0c;内层函数访问了外层函数的局部变量。 // 闭包 function func1() {let a 9;let b 8;function func2() {console.log("a", a); // a 9}func2(); } func1(); 分析&#xff1a; 需要访问的变量会被放到闭包…

语义分割实战项目(从原理到代码环境配置)

MMsegmentation是一个基于PyTorch的图像分割工具库,它提供了多种分割算法的实现,包括语义分割、实例分割、轮廓分割等。MMsegmentation的目标是提供一个易于使用、高效、灵活且可扩展的平台,以便开发者可以轻松地使用最先进的分割算法进行研究和开发。 看下结果 MMsegmenta…

day13 网络编程Tomcat服务器

c/s架构和b/s架构的区别 c/s架构:客户端软件,直观,体验好,界面美观,安全性高 b/s架构:浏览器–>服务器,可移植性好,开发和维护性好 网络访问的三要素:ip,端口,协议 udp协议和tcp协议的区别 udp协议:只管发送,不管发送到哪里,是否能不能接收,一对多,无连接通信协议 ​ …

《元宇宙之声》:Meta MCDH

为下一代建造未来就绪的校园。 在本期节目中&#xff0c;我们访问了香港路德会马锦明慈善基金马陈端喜纪念中学&#xff08;MCDH&#xff09;的陈婉玲校长&#xff0c;讨论了 MCDH 改革教育的愿景&#xff0c;通过培养年轻的创作者&#xff0c;让他们迈出进入 The Sandbox 的第…

模拟strcpy函数,assert,const修饰指针与凉皮男孩的故事

那么好了好了&#xff0c;宝子们&#xff0c;今天给大家介绍一下strcpy函数及其模拟&#xff0c;还有assert&#xff0c;const与凉皮男孩间的爱恨情仇&#xff0c;来吧&#xff0c;开始整活&#xff01;⛳️&#xff08;今天的内容和故事非常的有趣&#xff0c;希望大家一键三连…

基于51单片机的两路数字电压表Protues仿真设计

目录 一、设计背景 1.1、数字电压表的发展历程 1.2、课题的意义和目的 二、实现功能 三、仿真演示 四、部分程序展示 一、设计背景 1.1、数字电压表的发展历程 数字电压表简称DVM&#xff0c;它是采用数字化测量技术设计的电压表。从性能来看&#xff1a;数字电压表的发展从…

Go完整即时通讯项目及Go的生态介绍

Go完整即时通讯项目 项目架构&#xff1a; 1 编写基本服务端-Server server.go package mainimport ("fmt""net" )// 定义服务端 type Server struct {ip stringport int }// 创建一个Server func NewServer(ip string, port int) *Server {return …

Vue电商项目--分页器制作

分页器静态组件 分页这个组件&#xff0c;不单单是一个页面用到了。多个页面同时用它,因此我们可以封装成一个全局组件 需要将这个分页结构拆分到components 通用的分页组件Pagination <template><div class"pagination"><button>1</butto…

公司只有1个测试,领导却让我测试10个项目,这不是为难我....

读者提问&#xff1a;公司只有 1个测试&#xff0c;领导让我同时测试 10个项目&#xff0c;我该怎么办&#xff1f;回答&#xff1a;如果我是那个测试&#xff0c;我会做这三件事 1、向上申请资源2、任务分配到人3、执行测试任务 一、向上申请资源 1个测试同时对接 10个项目&a…

python 自动化学习(三) 句柄获取、模拟按键、opencv安装

一、什么是句柄 句柄是在操作系统中的一种标识符&#xff0c;相当于我们每个人的身份证一样&#xff0c;句柄在电脑中也是有唯一性的&#xff0c;我们启动的每一个程序都有自己的句柄号&#xff0c;表示自己的身份 为什么要说句柄&#xff0c;我们如果想做自动化操作时&#xf…

分布式项目 11 在项目中使用jsonp发送请求并且处理

在项目中使用jsonp技术 01.相关子系统的搭建 第一步&#xff1a;创建一个新的子系统&#xff0c;叫做jt-sso 选中jt父级项目&#xff0c;然后鼠标右键进行new&#xff0c;然后选中maven Model&#xff0c;进行项目的创建&#xff0c;具体操 作如下图所示&#xff1a; 第二步…

空气中的声压级、声功率级、声强级的区别

空气中的声压级、声功率级、的区别 在学习声学理论时&#xff0c;经常听到&#xff0c;声压级、声强级、声功率级的名称&#xff0c;经常也听到它们的单位为dB.但是它们是怎样的区别呢&#xff1f;下面介绍这几个名词 一、定义和计算 1.声压级 声压级以 L p {L_p} Lp​表示&am…

解决weekofyear跨年问题

目录 前言跨年问题计算当年第几周前言 前段时间,做了一个日期维度表的需求,发现 计算当年第几周 有误,发现 Hive 中 weekofyear 函数存在跨年问题! 跨年问题 这一周算上一年还是下一年,取决于这一周的大多数日期(4天及以上)在哪一年。算在前一年,就是前一年的最后一…

算法修炼之练气篇——练气十二层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 前言&#xff1a;每天练习五道题&#xff0c;炼气篇大概会练习200道题左右&#xff0c;题目有C语言网上的题&#xff0c;也有洛谷上面的题&#xff0c;题目简单适合新手入门。&#xff08;代码都是命运之光自己写的…

机械师曙光16电脑开机自动蓝屏怎么解决?

机械师曙光16电脑开机自动蓝屏怎么解决&#xff1f;有的用户在使用机械师曙光16电脑的时候&#xff0c;遇到了一些系统问题&#xff0c;导致自己无法正常的开机使用电脑。因为电脑总会变成蓝屏&#xff0c;无法进行任何操作。那么这个情况怎么去进行问题的解决呢&#xff1f;来…

【2023年电工杯数学建模竞赛B题人工智能对大学生学习影响的评价】完整思路分析+完整代码

1.问题背景与描述 这道题整体还是相对简单的&#xff0c;比较适合新手&#xff0c;选的人多对应获奖数量也会多&#xff0c;所以不要纠结于选题&#xff0c;就选你看上去能做的就好 2.问题分析 2.1 问题一的分析 对附件2中所给数据进行分析和数值化处理&#xff0c;并给出处…

SpringMVC一站式学习,分分钟钟让你上手

文章目录 一、SpringMVC1.1 引言1.2 MVC架构1.2.1 概念1.2.2 好处 二、开发流程2.1 导入依赖2.2 配置核心(前端)控制器2.3 后端控制器2.4 配置文件2.5 访问 三、接收请求参数3.1 基本类型参数3.2 实体收参【重点】3.3 数组收参3.4 集合收参 【了解】3.5 路径参数3.6 中文乱码 四…

【Netty】字节缓冲区 ByteBuf(七)(下)

文章目录 前言一、实现原理二、ByteBuf 的使用案例三、ByteBuf 的3种使用模式3.1 堆缓冲模式3.2 直接缓冲区模式3.3 复合缓冲区模式 总结 前言 回顾Netty系列文章&#xff1a; Netty 概述&#xff08;一&#xff09;Netty 架构设计&#xff08;二&#xff09;Netty Channel 概…