免税香烟网上商城/排名优化培训

免税香烟网上商城,排名优化培训,个人网站免备案吗,衢州网站公司目录 1. fread 从文件中读取数据 1.1 读取次数 每次读取字节数 < 原内容字节数 1.2 读取次数 每次读取字节数 > 原内容字节数 2.fwrite 向文件中写入数据 2.1写入字符串验证 2.2写入结构体验证 3. fprintf 将数据写入到指定文件 4. fscanf 从文件中逐行读取内容…

目录

1. fread 从文件中读取数据

1.1 读取次数 × 每次读取字节数 < 原内容字节数

1.2 读取次数 × 每次读取字节数 > 原内容字节数

2.fwrite 向文件中写入数据

2.1写入字符串验证

2.2写入结构体验证

3. fprintf 将数据写入到指定文件

4. fscanf 从文件中逐行读取内容,并将其存储在结构中

4.1 读取整形、浮点型、字符程序:

4.2 读取结构体程序:

4.2.1读取 空格 间隔数据

4.2.2读取 空格-空格 间隔数据

5.fprintf 和 fscanf 联合使用


1. fread 从文件中读取数据

函数原型:

/* 功能:从文件中读取数据
参数:
ptr:保存读取的数据
size:每次读取的字节数
nmemb:一共读取的次数
stream:文件指针返回值:成功:实际读取的次数(对象数、块数)失败:0如果文件内容读取完毕,返回0 */
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

1.1 读取次数 × 每次读取字节数 < 原内容字节数

程序:file.txt 共32个字节,程序读取3次,每次6个字节,共18个字节。

#include <stdio.h>int test1()
{FILE *fp = NULL;//只读打开 file.txtfp = fopen("./file.txt", "r");if(fp == NULL){printf("fail to fopen\n");return -1;}//使用fread函数读取文件内容int num;char buf[64] = {0};//从fp中读取3次数据,每次读取6个字节,保存到bufnum = fread(buf, 6, 3, fp);printf("buf = %s\n", buf);printf("num = %d\n", num);if(num == 0){printf(" fail to fread \n", num);}fclose(fp);  	 	return 0;
}int main(int argc, char *argv[])
{test1();return 0;
}

运行结果:

1.2 读取次数 × 每次读取字节数 > 原内容字节数

 例: fread(buf, size, num, fp); //读取num次,每次size个字节大小。

若:如果读到 n*size 个字节,返回值为 n 

.....
 如果读到了大于等于2*size 个字节, 小于3*size个字节, 返回值为 2
 读到的字节数,大于等于size 个字节 ,小于2*size个字节, 返回值为 1
 不到size 个字节,返回值为 0 


int num = fread(str,10,3,fp);
读取的字节数为 ,每次读取10个字节,读3次, 返回值为num。


 如果读到30个字节,返回值num为3
 如果读到了大于等于20个字节,小于30个字节, 返回值为2
 读到的字节数,大于等于10个字节,小于20个字节 返回值为1
 不到10个字节,返回值为0

程序:

#include <stdio.h>int test1()
{FILE *fp = NULL;//只读打开 file.txtfp = fopen("./file.txt", "r");if(fp == NULL){printf("fail to fopen\n");return -1;}//使用fread函数读取文件内容int num;char buf[64] = {0};//从fp中读取3次数据,每次读取6个字节,保存到bufnum = fread(buf, 30, 3, fp);printf("buf = %s\n", buf);printf("num = %d\n", num);if(num == 0){printf(" fail to fread \n", num);}fclose(fp);  	 	return 0;
}int main(int argc, char *argv[])
{test1();return 0;
}

运行结果:修改程序每次读取字节数

(1)num = fread(buf, 30, 3, fp);

(2)num = fread(buf, 15, 3, fp);

(3)num = fread(buf, 35, 3, fp);

2.fwrite 向文件中写入数据

函数原型:

/*功能:向文件中写入数据
参数:
ptr:要写入的数据
size:一次写入的字节数
nmemb:一共写入的次数
stream:文件指针返回值:成功:实际写入的次数失败:0 */
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

2.1写入字符串验证

程序:

#include <stdio.h>
#include <string.h>int test1()
{FILE *fp = NULL;//读写打开 file.txt,不存在创建,存在清0fp = fopen("./file.txt", "w+");if(fp == NULL){printf("fail to fopen\n");return -1;}int num;char buf[] = {"hello world"};//向fp中写入3次数据,每次写入strlen(buf)个字节,num = fwrite(buf, strlen(buf), 3, fp);printf("strlen(buf) = %d\n", strlen(buf));printf("fwrite num = %d\n", num);printf("fwrite size = %d\n", num*strlen(buf));//向文件写入字节大小if(num == 0){printf(" fail to fwrite \n", num);}//将文件的偏移量设置为文件的起始位置rewind(fp);//使用fread函数读取文件内容char buf1[128] = {0};//从fp中读取3次数据,每次读取strlen(buf)个字节,保存到buf1num = fread(buf1, strlen(buf), 3, fp);printf("fread num = %d\n", num);printf("buf1  = %s\n", buf1);printf("strlen(buf1) = %d\n", strlen(buf1));if(num == 0){printf(" fail to fread \n", num);}fclose(fp);  	 	return 0;}int main(int argc, char *argv[])
{test1();return 0;
}

运行结果:对file.txt写入3次hello world ,每次写入11个字节

2.2写入结构体验证

程序:

#include <stdio.h>
#include <string.h>typedef struct{int i1;int i2;char c1;char c2;
}DATA;int test2()
{FILE *fp = NULL;fp = fopen("./file1.txt", "w+");if(fp == NULL){printf("fail to fopen\n");return -1;}//使用fwrite向文件写入一个结构体DATA data[3] = {1, 2, 'a', 'b', 3, 4, 'c', 'd', 5, 6, 'e', 'f',};//向fp写入3次数据,每次sizeof(DATA)个字节int num = fwrite(data, sizeof(DATA), 3, fp);printf("fwrite num = %d\n", num);//将文件的偏移量设置为文件的起始位置,不设为起始,读取位置将从写入最后一个字节之后开始。rewind(fp);DATA read_data[3];//从fp读取写入数据,每次sizeof(DATA)个字节,读取3次数据int num1 = fread(read_data, sizeof(DATA), 3, fp);printf("fread num = %d\n", num1);int j;for(j = 0; j < 3; j++) //循环读取read_data数据{printf("%d - %d - %c - %c\n", read_data[j].i1, read_data[j].i2, read_data[j].c1,  read_data[j].c2);}fclose(fp);  	 	return 0;
}int main(int argc, char *argv[])
{test2();return 0;
}

运行结果:

3. fprintf 将数据写入到指定文件

函数原型:

/*  fprintf 和printf函数类似:printf是将数据输出到屏幕上(标准输出),fprintf函数是将数据输出到文件指针所指定的文件中。 *//* 参数‌:
stream:文件指针,指定输出目标(如文件、stdout、stderr)。
format:格式化字符串,定义输出格式(如 %d, %s, %f)。
...:可变参数列表,对应 format 中的格式说明符。
‌返回值‌:成功时返回写入的字符数,失败时返回负值。 */int fprintf(FILE *stream, const char *format, ...);

程序:

#include <stdio.h>
#include <string.h>int test1()
{char ch='a';int num=10;char str[20]="hello world";float score = 68.9;FILE *fp = NULL;//读写打开 file.txtfp = fopen("./file.txt", "w+");if(fp == NULL){printf("fail to fopen\n");return -1;}//使用fprintf向文件写入字符串int num1 = fprintf(fp,"%c %d %s %f\n",ch,num,str,score);printf("fprintf num = %d\n", num1);if(num1 < 0){printf(" fail to fprintf \n");return -1;}fclose(fp);  	 	return 0;
}int main(int argc, char *argv[])
{test1();return 0;
}

运行结果:

4. fscanf 从文件中逐行读取内容,并将其存储在结构中

函数原型:

 /* fscanf和scanf 函数类似:scanf是从键盘(标准输入)获取输入,fscanf是从文件指针所标示的文件中获取输入。 *//* 参数‌:
stream:文件指针(如 FILE *fp 或 stdin)‌。
format:格式字符串,定义输入数据的格式(如 %d, %s, %f)‌。
...:可变参数列表,需为变量地址(如 &num, name 数组名)‌ ‌返回值‌:
成功时,返回输入数据格式数量‌(%d %s 等成功读取的个数)。
失败或 文件结尾返回 EOF(即 -1)‌ */int fscanf(FILE *stream, const char *format, ...)

4.1 读取整形、浮点型、字符程序:

#include <stdio.h>
#include <string.h>int test1()
{     char ch;int num;char str[32] = "";float score ;FILE *fp = NULL;//追加读写打开 file.txtfp = fopen("./file.txt", "r");if(fp == NULL){printf("fail to fopen\n");return -1;}//将文件的偏移量设置为文件的起始位置,不设为起始,读取位置将从写入最后一个字节之后开始。//rewind(fp);//从指定文件读取数据int num1 = fscanf(fp,"%c %d %s %f\n", &ch, &num, &str, &score);printf("ch= %c num= %d str= %s score= %f\n", ch, num, str, score);printf("fprintf num1 = %d\n", num1);if(num1 == EOF){printf(" fprintf fail or end \n");return -1;}return 0;
}int main(int argc, char *argv[])
{test1();fclose(fp);return 0;
}

运行结果:

file.txt原有内容:

4.2 读取结构体程序:

4.2.1读取 空格 间隔数据

程序:

#include <stdio.h>
#include <string.h>typedef struct
{char name[32];int age;   int score;
}DATA;int test2()//循环读取文件内容
{FILE *fp = NULL;//只读打开 file.txtfp = fopen("./file1.txt", "r");if(fp == NULL){printf("fail to fopen\n");return -1;}DATA dt;//从指定文件循环读取一行数据while(fscanf(fp, "%s %d %d\n", dt.name,  &dt.age, &dt.score) == 3) //char name[32];{printf("name= %s age= %d score= %d\n", dt.name, dt.age, dt.score );}fclose(fp);return 0;
}int main(int argc, char *argv[])
{test2();	return 0;
}

运行结果:

注意fscanf第二个参数要与文件数据格式保持一致。

fscanf(fp, "%s %d %d", dt.name,  &dt.age, &dt.score);

4.2.2读取 空格-空格 间隔数据

程序:

#include <stdio.h>
#include <string.h>typedef struct
{char name[32];int age;   int score;
}DATA;int test2()//循环读取文件内容
{FILE *fp = NULL;//只读打开 file.txtfp = fopen("./file1.txt", "r");if(fp == NULL){printf("fail to fopen\n");return -1;}DATA dt;//fprintf 和 fscanf 联合使用,fprintf写入文本时加入\n,在fscanf读取时也要加\n。
//单独使用fscanf读取多行数据时,可不加\n//从指定文件循环读取一行数据while(fscanf(fp, "%s - %d - %d", dt.name,  &dt.age, &dt.score) == 3)//while(fscanf(fp, "%s - %d - %d\n", dt.name,  &dt.age, &dt.score) == 3){printf("name= %s age= %d score= %d\n", dt.name, dt.age, dt.score );}fclose(fp);return 0;
}int main(int argc, char *argv[])
{test2();	return 0;
}

运行结果:注意fscanf第二个参数要与文件数据格式保持一致。

fscanf(fp, "%s - %d - %d", dt.name, &dt.age, &dt.score);

5.fprintf 和 fscanf 联合使用

程序:

#include <stdio.h>
#include <string.h>int test4()//
{FILE *fp = NULL;//读写打开 file.txtfp = fopen("./file.txt", "w+");if(fp == NULL){printf("fail to fopen\n");return -1;}int num = 0;char ch1 = 'a', ch11;int i1 = 1, i11;char ch2 = 'e', ch22;int i2 = 10, i22;int j = 0;for(j = 0;j < 3;j++){//使用fprintf向文件写入字符串num = fprintf(fp,"%c %d %c %d\n",ch1 + j, i1 + j, ch2 + j, i2 + j);if(num < 0){printf("fail to fprintf\n");}}//将文件的偏移量设置为文件的起始位置,不设为起始,读取位置将从写入最后一个字节之后开始。rewind(fp);//fprintf 和 fscanf 联合使用,fprintf写入文本时加入\n,在fscanf读取时也要加\n。
//单独使用fscanf读取多行数据时,可不加\n//从指定文件循环读取一行数据//while(fscanf(fp, "%c %d %c %d\n",&ch11 , &i11 , &ch22 , &i22) == 4) {printf("read:%c %d %c %d\n", ch11 , i11 , ch22 , i22 );}fclose(fp);return 0;
}int main(int argc, char *argv[])
{test4();return 0;
}

运行结果:

注意:(1)写入文件后,将偏移量移至文件开头。 // rewind(fp);

(2)程序写入了 \n;

fprintf(fp,"%c %d %c %d\n",ch1 + j, i1 + j, ch2 + j, i2 + j);

读取时也要加:

while(fscanf(fp, "%c %d %c %d\n",&ch11 , &i11 , &ch22 , &i22) == 4) 

(3)//fprintf 和 fscanf 联合使用,fprintf写入文本时加入\n,在fscanf读取时也要加\n。

//单独使用fscanf读取多行数据时,可不加\n

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

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

相关文章

Python 中下划线 “_” 的多面性:从变量到约定

# Python中下划线“_”的多面性&#xff1a;从变量到约定 在Python的语法体系里&#xff0c;下划线“_”看似毫不起眼&#xff0c;实则扮演着极为重要且多样化的角色。它不仅能作为普通变量参与编程&#xff0c;更在多个特殊场景下有着独特的用途与约定。深入理解下划线的各种…

深入 Linux 声卡驱动开发:核心问题与实战解析

1. 字符设备驱动如何为声卡提供操作接口&#xff1f; 问题背景 在 Linux 系统中&#xff0c;声卡被抽象为字符设备。如何通过代码让应用程序能够访问声卡的录音和播放功能&#xff1f; 核心答案 1.1 字符设备驱动的核心结构 Linux 字符设备驱动通过 file_operations 结构体定…

基于Spring Boot的图书管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

STM32HAL库,解决串口UART中断接收到的第一个字节数据丢失

1.问题描述&#xff1a; 只有上电后第一次接收到的第一字节数据会丢失&#xff0c;往后再接收也不会存在问题了。 2.先贴出来重写UART中断回调函数 我在接收到第一字节数据后开启定时器中断的&#xff0c;做一个超时处理&#xff0c;每次接收到数据会对定时器计数值清零&…

解决 vxe-table 固定列对不齐,滚动后错位、展开行遮挡的问题,解决渲染空白、边框丢失问题

解决 vxe-table 固定列对不齐&#xff0c;滚动后错位、展开行遮挡的问题&#xff0c;解决渲染空白、边框丢失问题。 解决方法&#xff0c;更新到最新版本就完美解决了&#xff1b;v4 版本更新到 v4.12&#xff0c;v3版本更新到 v3.14 查看官网&#xff1a;https://vxetable.cn…

设备健康管理系统是什么,设备健康管理系统多少钱?

想象一下&#xff0c;你的汽车在仪表盘报警前 3 天&#xff0c;手机就收到 “发动机轴承剩余寿命 1500 公里” 的提醒 —— 这就是 ** 设备健康管理系统&#xff08;EHM&#xff09;** 的日常。在制造业&#xff0c;设备故障每年造成全球 3.4 万亿美元损失&#xff0c;而 80% 的…

区块链(Blockchain)

区块链&#xff08;Blockchain&#xff09;是一种去中心化、分布式的账本技术&#xff0c;它通过密码学保证数据的安全性和不可篡改性。它的核心特点包括去中心化、不可篡改性、可追溯性、智能合约等。 区块链的关键概念 区块&#xff08;Block&#xff09;&#xff1a;每个区…

和鲸科技受邀赴中国气象局气象干部培训学院湖南分院开展 DeepSeek 趋势下的人工智能技术应用专题培训

为深入贯彻落实国家关于人工智能与气象业务深度融合的战略部署&#xff0c;提升在实际业务中应用人工智能技术解决问题的能力&#xff0c;推动气象现代化高质量发展&#xff0c;中国气象局气象干部培训学院湖南分院于 2025 年 3 月 14 日组织开展 “DeepSeek 等人工智能技术在气…

Ubuntu 24 常用命令方法

文章目录 环境说明1、账号管理1.1、启用 root 2、包管理工具 apt & dpkg2.1、apt 简介 & 阿里源配置2.2、dpkg 简介2.3、apt 和 dpkg 两者之间的关系2.4、常用命令 3、启用 ssh 服务4、防火墙5、开启远程登录6、关闭交换分区7、build-essential&#xff08;编译和开发软…

OpenCV计算摄影学(22)将输入的彩色图像转换为两种风格的铅笔素描效果函数pencilSketch()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 铅笔风格非写实线描图。 该函数通过图像处理技术将输入的彩色图像转换为两种风格的铅笔素描效果&#xff1a; dst1&#xff1a;炭笔效果的灰度图…

hackmyvm-Smol

信息收集 ┌──(root㉿kali)-[/home/kali] └─# arp-scan -I eth1 192.168.56.0/24 Interface: eth1, type: EN10MB, MAC: 00:0c:29:34:da:f5, IPv4: 192.168.56.103 WARNING: Cannot open MAC/Vendor file ieee-oui.txt: Permission denied WARNING: Cannot open MAC/Vendo…

使用DeepSeek和墨刀AI,写PRD文档、画原型图的思路、过程及方法

使用DeepSeek和墨刀AI&#xff0c;写PRD文档、画原型图的思路、过程及方法 现在PRD文档要如何写更高效、更清晰、更完整&#xff1f; 还是按以前的思路写PRD&#xff0c;就还是以前的样子。 现在AI这么强大&#xff0c;产品经理如何使用DeepSeek写PRD文档&#xff0c;产品经…

SpringData Redis缓存:自定义序列化与过期策略

文章目录 引言一、Spring Cache与Redis集成基础二、Redis缓存配置基础三、自定义序列化策略四、实现自定义序列化器五、多级缓存配置六、自定义过期策略七、缓存注解的高级应用八、实现缓存预热与更新策略九、缓存监控与统计总结 引言 在现代高并发分布式系统中&#xff0c;缓…

HOVER:人形机器人的多功能神经网络全身控制器

编辑&#xff1a;陈萍萍的公主一点人工一点智能 HOVER&#xff1a;人形机器人的多功能神经网络全身控制器HOVER通过策略蒸馏和统一命令空间设计&#xff0c;为人形机器人提供了通用、高效的全身控制框架。https://mp.weixin.qq.com/s/R1cw47I4BOi2UfF_m-KzWg 01 介绍 1.1 摘…

mybatis_plus的乐观锁

乐观锁&#xff1a;总是假设最好的情况&#xff0c;每次读取数据时认为数据不会被修改&#xff08;即不加锁&#xff09;&#xff0c;当进行更新操作时&#xff0c;会判断这条数据是否被修改&#xff0c;未被修改&#xff0c;则进行更新操作。若被修改&#xff0c;则数据更新失…

AT指令集-NBIOT

是什么&#xff1f; 窄带物联网&#xff08;Narrow Band Internet of Things, NB-IoT&#xff09;成为万物互联网络的一个重要分支支持低功耗设备在广域网的蜂窝数据连接&#xff0c;也被叫作低功耗广域网(LPWAN)NB-IoT支持待机时间长、对网络连接要求较高设备的高效连接NB-Io…

CBNet:一种用于目标检测的复合骨干网架构之论文阅读

摘要 现代顶级性能的目标检测器在很大程度上依赖于骨干网络&#xff0c;而骨干网络的进步通过探索更高效的网络结构带来了持续的性能提升。本文提出了一种新颖且灵活的骨干框架——CBNet&#xff0c;该框架利用现有的开源预训练骨干网络&#xff0c;在预训练-微调范式下构建高…

《保险科技》

自己在保险行业工作很多年&#xff0c;只是接触了一些数据的内容&#xff0c;对于保险业务的知识了解的很少&#xff0c;想通过这本书补充一下&#xff0c;但是发现这本书就是一些知识的拼接。 先将保险的历史&#xff0c;后讲保险的定义&#xff0c;然后就是吹嘘保险行业和互联…

蓝桥杯第13届真题2

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut&#xff0c;锁存器PD2也是&#xff0c;然后都设置为起始高电平&#xff0c;生成代码时还要去解决引脚冲突问题 二.按键 按键配置&#xff0c;由原理图按键所对引脚要GPIO_Input 生成代码&a…

双曲空间学习记录

文章目录 前期学习内容双曲空间中的图卷积神经网络 前期学习内容 双曲空间中的图卷积神经网络 250318&#xff1a;这个博客的产生原因是我去看了B站上的一个视频&#xff0c;up说ppt上传到github上了&#xff0c;但是我去找了一圈也没有找到&#xff0c;然后想给他留言&#x…