当前位置:网站首页>IO进程线程->标准IO->day1
IO进程线程->标准IO->day1
2022-07-30 05:46:00 【鲸叫我照顾海QAQ】
目录
一、练习
1. 用fgets和fputs实现,拷贝一个文件,例如将1.c的内容拷贝给2.c
2. 用fgets计算一个文件的大小,要求封装成函数
3. 用fgets计算一个文件有几行,要求封装成函数(linux操作系统以\n结尾,就算是最后一行也
有一个'\n')
二、fgets和fputs
2.1 fputs
功能:将字符串输出到指定的文件中;
头文件:
#include <stdio.h>
int fputs(const char *s, FILE *stream);
int puts(const char *s);
参数: const char *s:指定要输出的字符串首地址;
FILE *stream:流指针;
返回值:
成功,返回非负数;
失败,返回EOF;
2.2 fgets
三、 拷贝函数实现
3.1 代码
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
FILE *p1=fopen("./1.text","r");
FILE *p2=fopen("./2.text","w+");
if(NULL == p1 && NULL == p2)
{
perror("fopen");
return -1;
}
char i[20]={0};
while(fgets(i,sizeof(i),p1) != NULL)
{
fputs(i,p2);
}
printf("拷贝成功\n");
fclose(p1);
fclose(p2);
return 0;
}
3.2 执行结果

四、文件大小函数
4.1 文件大小函数
//文件大小
int len_fgtes()
{
FILE *p=fopen("./3.text","r+");
if(NULL == p)
{
perror("fopen");
return -1;
}
char i[20];
int arr=0;
while(fgets(i,sizeof(i),p) != NULL)
{
arr=arr+strlen(i);
}
printf("3.text的字节数为:%d\n",arr);
fclose(p);
}
4.2 主函数
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
len_fgtes();
return 0;
}
4.3 执行结果

五、文件行数
5.1 文件行数函数
//文件行数
int hang_fgets()
{
FILE *p=fopen("./1.text","r+");
if(NULL == p)
{
perror("fopen");
return -1;
}
char i[20];
int arr=0;
while(fgets(i,sizeof(i),p) != NULL)
{
for(int k=0;k<sizeof(i);k++)
{
if(i[k] == '\n')
{
arr++;
break;
}
}
}
printf("1.text的行数为:%d\n",arr);
fclose(p);
}
5.2 主函数
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
hang_fgets();
return 0;
}
5.3 执行结果

边栏推荐
- 关于 PCB 多层板制程能力不得不说的那些事儿
- 电子工程师怎么才能规范设计标准、提高设计效率?
- led闪烁
- Sklearn : train_test_split()函数的用法
- OpenLayers (ol包),Vite显示地图(附源码)
- 表格比手机屏幕宽时不压缩,可左右滚动,格子内容不换行
- 信号链模拟芯片是什么?
- Written before the official account - QT, ARM, DSP, microcontroller, power electronics and transmission!
- 查找Proj4js地图投影参数
- QT serial port dynamically displays a large number of data waveform curves in real time (5) ======== "Final perfect solution version"
猜你喜欢

IO进程线程->目录IO->day3

主机和从机配置,建立ssh连接实现Rviz远程控制

二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通

与所有 ARM 工具、软件兼容?韦斯佰瑞这款MCU内核值得关注!

Duplicate keys detected:‘/da…‘

VsCode连接远程服务器并修改文件代码

2021 soft exam intermediate pass

服务器基础知识:包含基本概念,作用,服务器选择,服务器管理等(学习来自米拓建站)
![[Quick MSP430f149] Notes on learning MSP430f149 during the game](/img/06/741c609b24be007718091b8348666c.png)
[Quick MSP430f149] Notes on learning MSP430f149 during the game

【正点原子】IIC的学习与使用(未完...)
随机推荐
【markdown常用用法】
实现二叉树--实现删除
无法完成包的安装npm ERR! Refusing to install package with name “moment“ under a package also called “moment“
QT serial and CAN dynamic real-time display the log data
Kunlun On-state Screen Production (serial 1)---Contact
2021 soft exam intermediate pass
迷宫问题----经典回溯法解决
HSPF model application
数码管动态显示及模块化编程
华秋电子成为开放原子开源基金会openDACS捐赠人,共建 openDACS开源生态
C语言,库函数中qsort的用法,及解释
动态规划进阶 JS
洛谷一P1097 [NOIP2007 提高组] 统计数字
IO进程线程->目录IO->day3
jvm之逃逸分析
创建快捷方式时如何不带“快捷方式“后缀字样?
------实现二叉搜索树BST
力扣题解7.27
给Vscode配置ESlint语法检查 — ESLint 插件自动格式化设置(实现Ctrl+S 按照ESLint规则自动格式化代码)
编程测试6.21