文件操作;

目录

1.文件的打开与关闭;

打开文件;

关闭文件;

2.文件的打开方式;

“r”(只读);

“w”(只写);

3.文件的顺序读写;

字符输入函数fgetc

代码1:

代码2(标准输入流):

字符输出函数fputc

代码1(文件输出流):

代码2(标准输出流):

文本行输入函数fgets

代码1(文件输入流):

代码2(标准输入流):

文本行输出函数fputs

代码1(文件输出流):

代码2(标准输出流):

格式化输入函数fscanf

代码1(文件输入流):

代码2(标准输入流):

格式化输出函数fprintf

代码1(文件输入流):

代码2(标准输出流):

sscanf和sprintf

代码:

二进制输入fread

代码:

二进制输出fwrite

代码:

4.文件的随机读写;

fseek:

简要介绍:

代码举例:

代码分析:

运行结果:​编辑

ftell:

简要介绍:

代码举例:

代码分析:

运行结果:

rewind:

简要介绍:

代码举例:

代码分析:

运行结果:

5.文件结束判断;

用途:

代码举例:

代码分析:

运行结果:

6.文件缓冲区;

简要介绍:

代码举例:

代码分析:

运行结果:


1.文件的打开与关闭;

打开文件;

FILE * fopen ( const char * filename, const char * mode );

关闭文件;

int fclose ( FILE * stream);

2.文件的打开方式;

“r”(只读);

为了输入数据,打开一个已经存在的文本文件;如果指定文件不存在会出错;
代码:
#include <stdio.h>
int main()
{FILE* pFile;//打开文件pFile = fopen("myfile.txt", "r");//文件操作fclose(pFile);return 0;
}

代码分析:

从图中看,文件夹所在位置并没有要读的文件,所以运行结果应该是出现错误;

运行结果:

“w”(只写);

为了输出数据,打开一个文本文件;如果指定文件不存在会建立一个新的文件;
代码:
#include <stdio.h>
int main()
{FILE* pFile;//打开文件pFile = fopen("myfile.txt", "w");//文件操作if (pFile != NULL){fputs("fopen example", pFile);//关闭文件fclose(pFile);}return 0;
}

代码分析:

这里文件的使用方式是只写,有这个文件就打开这个文件,没有就创建这个文件,然后判断是否是空指针,如果不是,用fputs将字符串写入这个文件,关闭文件;

运行结果:

3.文件的顺序读写;

字符输入函数fgetc

适用于所有输入流;
代码1:
#include<stdio.h>
int main()
{FILE* pf = fopen("data.text", "r");///要读文件if (NULL == pf)//现在是相对路径,在现在的路径下;{perror("fopen->pf");//因为源c所在的位置没有data.textreturn;}//从文件顺序往后读;int ch=fgetc(pf);//给data写字符;printf("%c\n", ch);ch = fgetc(pf);//给data写字符;printf("%c\n", ch);ch = fgetc(pf);//给data写字符;printf("%c\n", ch);ch = fgetc(pf);//给data写字符;printf("%c\n", ch);fclose(pf);pf = NULL;//否则置为野指针;return 0;
}

代码1分析:

在data.text文件内输入abcd,以只读的文件使用方式打开文件,并判断返回的是否是空指针;如果不是空指针,使用fgetc函数读取字符并放在ch里,打印出来;

运行结果:

代码2(标准输入流):
#include<stdio.h>
int main()
{FILE* pf = fopen("data.txt", "r");///要读文件if (NULL == pf)//现在是相对路径,在现在的路径下;{perror("fopen->pf");//因为源c所在的位置没有data.textreturn;}//从键盘顺序往后读int ch = fgetc(stdin);//给data写字符;printf("%c\n", ch);ch = fgetc(stdin);//给data写字符;printf("%c\n", ch);ch = fgetc(stdin);//给data写字符;printf("%c\n", ch);ch = fgetc(stdin);//给data写字符;printf("%c\n", ch);fclose(pf);pf = NULL;//否则置为野指针;return 0;
}

代码2分析:

fgetc从键盘上的得到数据,并打印;

运行结果:

字符输出函数fputc

适用于所有输出流;
代码1(文件输出流):
#include<stdio.h>
int main()
{	FILE* pf = fopen("light.text", "w");//文件不存在就创建一个;if (NULL == pf)//现在是相对路径,在现在的路径下;{perror("fopen->pf");//因为源c所在的位置没有data.textreturn;}fputc('a', pf);//给data写字符;fputc('b', pf);//每次写完之后,文件指针向后偏移一个;fputc('c', pf);fclose(pf);pf = NULL;//否则置为野指针;return 0;
}

代码1分析:

打开一个文件,以只写的方式,判断是否是空指针;如果不是空指针,使用fputc把字符放到文件里;

运行结果:
代码2(标准输出流):
#include<stdio.h>
int main()
{	FILE* pf = fopen("light.text", "w");//文件不存在就创建一个;if (NULL == pf)//现在是相对路径,在现在的路径下;{perror("fopen->pf");//因为源c所在的位置没有data.textreturn;}int i = 0;for (i = 0;i < 26;i++){fputc('a' + i, stdout);//这里stdout是标准输出,在屏幕上;}fclose(pf);pf = NULL;//否则置为野指针;return 0;
}

代码2分析:

使用fputc,将字符输出到屏幕上;

运行结果:

文本行输入函数fgets

适用于所有输入流;
代码1(文件输入流):
#include <stdio.h>
int main()
{FILE* x=fopen("data.txt", "r");if (NULL == x){perror("fopen");return;}char arr[10] = { 0 };fgets(arr,10,x);//x是从哪读,10 是读几个,arr是读了放到那;读的时候遇到换行不读,读到10-1加\n结束;printf("%s\n", arr);fgets(arr, 10, x);//x是从哪读,10 是读几个,arr是读了放到那;读的时候遇到换行不读,读到10-1加\n结束;printf("%s\n", arr);fclose(x);x = NULL;return 0;
}

代码1分析:

文件里字符的安放:

fgets规则:遇到换行不读;读到第n-1个字符后,后面直接换行结束;

运行结果:
代码2(标准输入流):
#include <stdio.h>
int main()
{FILE* x=fopen("data.txt", "r");if (NULL == x){perror("fopen");return;}char arr[10] = { 0 };//从屏幕上读fgets(arr, 10, stdin);//x是从哪读,10 是读几个,arr是读了放到那;读的时候遇到换行不读,读到10-1加\0结束;printf("%s\n", arr);fgets(arr, 10, stdin);//x是从哪读,10 是读几个,arr是读了放到那;读的时候遇到换行不读,读到10-1加\0结束;printf("%s\n", arr);fclose(x);x = NULL;return 0;
}

代码2分析:

fgets:从键盘上读10个字符存入arr;

运行结果:

文本行输出函数fputs

适用于所有输入流;
代码1(文件输出流):
#include <stdio.h>
int main()
{FILE* x=fopen("data.txt", "w");if (NULL == x){perror("fopen");return;}char arr[10] = { 0 };fputs("light abc\n", x);//换行\n;fputs("light adc", x);//只是一行;打印文件里;fclose(x);x = NULL;return 0;
}

代码1分析:

fputs函数把字符串输入到文件里;

运行结果:
代码2(标准输出流):
#include <stdio.h>
int main()
{FILE* x=fopen("data.txt", "w");if (NULL == x){perror("fopen");return;}char arr[10] = { 0 };fputs("light abc\n", stdout);//打印屏幕上;fputs("light adc",stdout);fclose(x);x = NULL;return 0;
}

代码2分析:

fputs把字符串输入到屏幕上;

运行结果:

格式化输入函数fscanf

适用于所有输入流;
代码1(文件输入流):
#include<stdio.h>
struct S
{int age;float height;
};
int main()
{/*FILE* x = fopen("data.text", "w");*///以写的方式;FILE* x = fopen("data.txt", "r");//以读的方式  if (NULL == x){perror("fopen");return;}struct S a = {0};fscanf(x, "%d %f", &(a.age), &(a.height));//读到的放到a里面;printf("%d %f", a.age, a.height);fclose(x);x = NULL;return 0;
}

代码1分析:

以只读的方式打开文件,判断是否是空指针;如果不是,使用fscanf函数,从文件里格式化形式读取文件,读到的结果放到a中;

运行结果:
代码2(标准输入流):
#include<stdio.h>
struct S
{int age;float height;
};
int main()
{/*FILE* x = fopen("data.text", "w");*///以写的方式;FILE* x = fopen("data.txt", "r");//以读的方式  if (NULL == x){perror("fopen");return;}struct S a = {0};fscanf(stdin, "%d %f", &(a.age), &(a.height));//从屏幕上读,读到的放到a里面;printf("%d %f", a.age, a.height);fclose(x);x = NULL;return 0;
}

代码2分析:

从键盘上读取数据,格式化的形式放到a中;

运行结果:

格式化输出函数fprintf

适用于所有输出流;
代码1(文件输入流):
#include<stdio.h>
struct S
{int age;float height;
};
int main()
{FILE* x = fopen("data.text", "w");//以写的方式;if (NULL == x){perror("fopen");return;}struct S a = { 18,1.78f };//写文件的时候//写文件fprintf(x, "%d %f", a.age, a.height);//存到x里面;fclose(x);x = NULL;return 0;
}

代码1分析:

将a中的内容格式化形式放到x里;

运行结果:
代码2(标准输出流):
#include<stdio.h>
struct S
{int age;float height;
};
int main()
{FILE* x = fopen("data.text", "w");//以写的方式;if (NULL == x){perror("fopen");return;}struct S a = { 18,1.78f };//写文件的时候//写文件fprintf(stdout, "%d %f", a.age, a.height);fclose(x);x = NULL;return 0;
}

代码2分析:

将a中的内容格式化输出到屏幕上;

运行结果:

sscanf和sprintf

代码:
#include<stdio.h>
struct s
{int age;float height;char name[10];
};
int main()
{struct s abc = { 18,.name = "abc",.height = 1.78f };struct s tem = { 0 };char name1[30] = { 0 };sprintf(name1, "%d %f %s", abc.age, abc.height, abc.name);//把abc的内容以中间要求的格式变成字符串存到name1里;printf("%s", name1);sscanf(name1,"%d %f %s",&(tem.age),&(tem.height),&(tem.name));//把字符串name1中的字符串以格式化的形式给结构变量temprintf("%d %f %s", tem.age, tem.height, tem.name);return 0;
}

代码分析:

sscanf:从字符串中读取格式化数据;sprintf:将格式化的数据转为字符串;将abc中的内容以格式化的形式放到name1里,形成字符串,打印出来;再将name1的字符串以格式化的方式放到tem中,打印出来;

运行结果:

二进制输入fread

适用于文件;
代码:
#include<stdio.h>
struct s
{int age;float height;char name[10];
};
int main()
{FILE* x = fopen("data1.text", "rb");if (NULL == x){perror("fopen");return;}struct s aw = { 0 };fread(&aw, sizeof(struct s), 1, x);//写到aw文件里;  //返回读到的个数;printf("%d %f %s", aw.age, aw.height, aw.name);//打印观察效果;fclose(x);x = NULL;return 0;
}

代码分析:

事先写入二进制文件(fwrite的运行结果图),将x中内容写到aw中;

运行结果:

二进制输出fwrite

适用于文件;
代码:
#include<stdio.h>
struct s
{int age;float height;char name[10];
};
int main()
{FILE* x = fopen("data1.text", "wb");if (NULL == x){perror("fopen");return;}struct s aw = { 15,1.78f,"daaf" };fwrite(&aw,sizeof(struct s),1,x);//写到x文件里;return 0;
}

代码分析:

以二进制只写的方式打开文件,判断是否是空指针;不是的话,将aw中的内容写到x里;这里sizeof()是要写数据的类型大小;1是表示写几个;

运行结果:

4.文件的随机读写;

fseek:

简要介绍:

int fseek ( FILE * stream, long int offset, int origin );stream是文件指针;offset是偏移量,+表示往右偏移,-表示往左偏移;origin:共有三种:

SEEK_SETBeginning of file
SEEK_CURCurrent position of the file pointer
SEEK_ENDEnd of file *
代码举例:
#include<stdio.h>
int fseek ( FILE * stream, long int offset, int origin );//起始位置偏移0就可以得到起始位置
//通过fseek定位指针;
int main()
{FILE* x = fopen("data.text", "r");int ch = fgetc(x);//一开始默认在开头 printf("%c\n", ch);ch = fgetc(x);printf("%c\n", ch);ch = fgetc(x);printf("%c\n", ch);ch = fgetc(x);printf("%c\n", ch);//abcd efghifseek(x, 2, SEEK_CUR);//2表示右移ch = fgetc(x);//gprintf("%c\n", ch);fseek(x, -3, SEEK_CUR);ch = fgetc(x);//eprintf("%c\n", ch);fclose(x);x = NULL;
}
代码分析:

这是文件里的内容,指向a的前面,读一次,打印a,偏移一位,一连读了四位,打印 a b

c d,现在指向d的后方,再从现在的位置向右偏移2,指向f的前面,读一个字符,打印出f,指向h的前面,再从现在的位置左移3,指向d的后面,读取一个空格字符;

运行结果:

ftell:

简要介绍:
long int ftell ( FILE * stream ); 返回的是文件指针相当于起始位置的偏移量;
代码举例:
int main()
{FILE* x = fopen("data.text", "r");int ch = fgetc(x);//一开始默认在开头 long int size = ftell(x);printf("%ld\n", size);ch = fgetc(x);size = ftell(x);printf("%ld\n", size);ch = fgetc(x);size = ftell(x);printf("%ld\n", size);ch = fgetc(x);size = ftell(x);printf("%ld\n", size);fseek(x, 2, SEEK_CUR);//2表示右移ch = fgetc(x);//gsize = ftell(x);printf("%ld\n", size);fclose(x);x = NULL;
}
代码分析:

一开始偏移量是0,读一个字符偏移量加1,读完前四个字符,偏移量依次是1、2、3、4,再使用fseek将指针的位置往后偏移2,此时偏移量是6,再读一个字符,偏移量是7;

运行结果:

rewind

简要介绍:
void rewind ( FILE * stream ); 让文件指针的位置回到文件的起始位置;
代码举例:
int main()
{FILE* x = fopen("data.text", "r");int ch = fgetc(x);//一开始默认在开头 printf("%c\n", ch);rewind(x);ch = fgetc(x);//一开始默认在开头 printf("%c\n", ch);rewind(x);ch = fgetc(x);//一开始默认在开头 printf("%c\n", ch);rewind(x);ch = fgetc(x);//一开始默认在开头 printf("%c\n", ch);rewind(x);ch = fgetc(x);//一开始默认在开头 printf("%c\n", ch);rewind(x);fclose(x);x = NULL;
}
代码分析:

这是文件里的内容,打开文件,判断指针是否是空指针,不是的话,使用fgetc读取字符,读完一个打印,然后让指针回到起始位置,再读,再打印,再让指针回到起始位置,共循环五次;

运行结果:

5.文件结束判断;

用途:

用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。
文本文件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets )

fgetc 判断是否为EOF 。

fgets 判断返回值是否为 NULL 。

二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。
fread判断返回值是否小于实际要读的个数。

代码举例:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{int c; // 注意:int,非char,要求处理EOFFILE* fp = fopen("test.txt", "r");if (!fp) {perror("File opening failed");return EXIT_FAILURE;}//fgetc 当读取失败的时候或者遇到文件结束的时候,都会返回EOFwhile ((c = fgetc(fp)) != EOF) // 标准C I/O读取文件循环{putchar(c);}//判断是什么原因结束的if (ferror(fp))puts("I/O error when reading");else if (feof(fp))puts("End of file reached successfully");fclose(fp);
}

代码分析:

先打开文件,判断指针是否是空指针;如果不是,进入while循环,如果fgetc返回的不是EOF,打印出c;跳出循环,判断是什么原因,先判断是否输入输出时错误,属于读取失败结束;再判断读取结束的原因,如果返回不等于0的数说明到了文件尾结束;

运行结果:

6.文件缓冲区;

简要介绍:

ANSIC 标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根据C编译系统决定的。

代码举例:

#include <stdio.h>
#include <windows.h>
//VS2013 WIN10环境测试
int main()
{FILE*pf = fopen("temt.txt", "w");fputs("abcdef", pf);printf("睡眠10秒-已经写数据了,打开test.txt文件,发现文件没有内容\n");Sleep(10000);printf("刷新缓冲区\n");fflush(pf);printf("再睡眠10秒-此时,再次打开test.txt文件,文件有内容了\n");Sleep(10000);fclose(pf);pf = NULL;return 0;
}

代码分析:

先打开文件,放入字符串abcdef,此时文件里没有内容,睡眠,使用fflush时会刷新缓冲区,数据会传送,此时打开文件会有内容;fclose时也会刷新缓冲区;

运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

离岸人民币与人民币国际化

参考 什么是离岸人民币&#xff1f;它有什么用&#xff1f; - 知乎 “人民币就是人民币&#xff0c;为什么要在它前面加上离岸二字&#xff1f;” “既然有离岸人民币&#xff0c;是否有在岸人民币&#xff1f;” 今天我们就简单了解一下什么是离岸人民币。 离岸/在岸人民币…

matlab关于COE文件之读取操作

平台&#xff1a;matlab2021b 场景&#xff1a;在使用fir滤波器后&#xff0c;我们使用matlab生成coe文件后。在xilinx新建IP的后&#xff0c;数据流经过FIR的IP核后数据位宽变宽。这时候我们需要对数据进行截位。这时候需要读取coe文件求和后&#xff0c;计算我们需要截位的位…

突破销售瓶颈!淘宝商品关键词搜索电商API接口助力增长

近年来&#xff0c;随着电商行业的飞速发展&#xff0c;越来越多的卖家遇到了销售瓶颈的问题。无论是面对竞争激烈的市场环境&#xff0c;还是受到新产品引领的冲击&#xff0c;找到突破口成为了卖家们迫切需要解决的难题。联讯数据将介绍一种能够助力增长的方法——淘宝商品关…

C语言入门第五天(复合类型)

一、结构体 1.结构体的概述 结构体(struct)可以理解为用户自定义的特殊的复合的“数据类型” 2.结构体变量的定义和初始化 定义结构体变量的方式&#xff1a; 先声明结构体类型再定义变量名在声明类型的同时定义变量 语法格式&#xff1a; // 先声明结构体类型再定义变量名 st…

低噪声放大器是如何实现低噪声放大的功能的

灵敏度作为接收机最重要的指标之一,直接决定了接收机能分辨的最小信号。接收机的灵敏度计算公式如下所示。 Psensitivity=-174dBm+NF+10*lg(BW)+SNR 由接收机灵敏度的计算公式可知,影响接收机灵敏度的指标有噪声系数、带宽和信噪比,因此一旦带宽和信噪比确定了,那么能决…

Java设计模式——代理模式

静态代理&#xff1a; Java静态代理是设计模式中的一种&#xff0c;它通过创建一个代理类来代替原始类&#xff0c;从而提供额外的功能或控制原始类的访问。 如何使用Java静态代理 要创建一个静态代理&#xff0c;你需要有一个接口&#xff0c;一个实现该接口的目标类&#…

民航电子数据库:[E14024]事务内变更操作次数超过最大许可值10000,可通过系统参数max_trans_modify适当调整限制

目录 一、场景二、异常情况三、原因四、排查五、解决 一、场景 1、对接民航电子数据 2、执行delete语句时报错 二、异常情况 三、原因 通过报错信息就可以看出&#xff0c;是系统参数max_trans_modify配置导致 当删除的数据量 > max_trans_modify时&#xff0c;删除就会…

HarmonyOS开发实例:【分布式手写板】

介绍 本篇Codelab使用设备管理及分布式键值数据库能力&#xff0c;实现多设备之间手写板应用拉起及同步书写内容的功能。操作流程&#xff1a; 设备连接同一无线网络&#xff0c;安装分布式手写板应用。进入应用&#xff0c;点击允许使用多设备协同&#xff0c;点击主页上查询…

JVM之方法区的详细解析

方法区 方法区&#xff1a;是各个线程共享的内存区域&#xff0c;用于存储已被虚拟机加载的类信息、常量、即时编译器编译后的代码等数据&#xff0c;虽然 Java 虚拟机规范把方法区描述为堆的一个逻辑部分&#xff0c;但是也叫 Non-Heap&#xff08;非堆&#xff09; 设置方法…

Latex学习(从入门到入土)3

第一章&#xff1a;排版矩阵 在LaTeX中&#xff0c;排版矩阵可以使用amsmath宏包提供的几种不同环境来实现。以下是一些常用的环境和它们的使用方式&#xff1a; ### 使用matrix环境 matrix环境是最基础的矩阵环境&#xff0c;它创建一个带有边框的矩阵&#xff0c;元素默认…

精益思维驱动人工智能革新:理论到实践的跃迁之旅

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已成为引领未来的关键力量。在这个变革的时代&#xff0c;如何将精益思维与人工智能相结合&#xff0c;推动AI从理论走向实践&#xff0c;成为行业内外关注的焦点。本文&#xff0c;天行健精益生产顾问将分享…

Macbook M1 Pro使用brew安装Docker并安装Nacos【超详细图解】

目录 一、安装 Docker 二、修改 Docker 镜像地址 三、拉取镜像-举例 Nacos 1.拉取镜像 2.查看本地镜像 3.删除镜像 四、启动容器 1.启动 Nacos 容器&#xff1a; I.方式一【推荐】 II.方式二【懒人推荐】 2.访问 Nacos Web 控制台 3.进入容器和退出容器 五、配置…

麻将的玩法及技巧

麻将是一种古老而受欢迎的博弈游戏&#xff0c;其玩法和技巧多种多样&#xff0c;因地区和玩家习惯的不同而有所差异。以下是一些通用的麻将玩法和技巧&#xff1a; 一、玩法 洗牌与码牌&#xff1a;玩家双手搓动牌&#xff0c;使牌均匀而无序地运动&#xff0c;称为“洗牌”。…

Java处理CSV类库:OpenCSV

一&#xff1a;CSV简介 Comma-Separated Values(CSV), 因分隔符没有严格指定规范标准&#xff0c;可以使用逗号&#xff0c;也可以使用其他字符&#xff08;如制表符\t、分号;等&#xff09;&#xff0c;所以CSV也称为 逗号分隔值或者字符分隔值。csv文件是使用纯文本来存储表…

MSSQL 命令行操作说明 sql server 2022 命令行下进行配置管理

说明&#xff1a;本文的内容是因为我在导入Access2019的 *.accdb 格式的数据时&#xff0c;总是出错的背景下&#xff0c;不得已搜索和整理了一下&#xff0c;如何用命令行进行sql server 数据库和用户管理的方法&#xff0c;作为从Access2019 直接导出数据到sql server 数据库…

linux限权

shell命令以及运行原理 什么是shell命令&#xff1a; 将使用者的命令翻译给核心&#xff08;kernel&#xff09;处理。同时&#xff0c;将核心的处理结果翻译给使用者。 shell就相当于操作系统外的一层外壳 其实就是登录linux时的一个可执行程序&#xff08;进程&#xff09…

安装kali虚拟机

第一步&#xff1a;安装vmware 安装到最后&#xff0c;会提示输入序列号 安装成功后的图标 第二步&#xff1a;创建一个虚拟主机 创建了一个虚拟机 第三步&#xff1a;给虚拟机安装系统 安装系统&#xff0c;都必须有 系统镜像文件 一般系统镜像文件的后缀是 .iso 第一步&a…

利用CNN-Bigru-Attention模型输电线路故障诊断(Python代码,TensorFlow框架,)

效果视频&#xff1a;利用CNN-Bigru-Attention模型输电线路故障诊断(Python代码&#xff0c;TensorFlow框架&#xff0c;压缩包带有数据集和代码&#xff0c;解压缩可直接运行)_哔哩哔哩_bilibili 售后包免费远程协助运行&#xff08;用向日葵或者todesk软件协助&#xff09; …

GoogleNet网络训练集和测试集搭建

测试集和训练集都是在之前搭建好的基础上进行修改的&#xff0c;重点记录与之前不同的代码。 还是使用的花分类的数据集进行训练和测试的。 一、训练集 1、搭建网络 设置参数&#xff1a;使用辅助分类器&#xff0c;采用权重初始化 net GoogleNet(num_classes5, aux_logi…

Midjourney常见玩法及prompt关键词技巧

今天系统给大家讲讲Midjourney的常见玩法和prompt关键词的一些注意事项&#xff0c;带大家入门&#xff5e;&#xff08;多图预警&#xff0c;建议收藏&#xff5e;&#xff09; 一、入门及常见玩法 1、注册并添加服务器&#xff08;会的童鞋可跳过&#xff5e;&#xff09; …