当前位置:网站首页>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 执行结果

边栏推荐
- QT serial port dynamically displays a large number of data waveform curves in real time (5) ======== "Final perfect solution version"
- vscode set sublime theme
- Explore the efficiency of make_shared
- 闭包(你不知道的JS)
- Antd简单启动一个企业级项目
- 独立按键控制led进阶(1)
- this的指向问题
- 三种内核结构---宏内核、微内核、混合内核
- ES6 syntax notes (ES6~ES11)
- Sklearn : train_test_split()函数的用法
猜你喜欢

Anaconda 安装低版本tensorflow

FPGA parsing B code----serial 1

查看 word版本号

FPGA parsing B code----serial 2

QT serial port dynamically displays a large number of data waveform curves in real time (5) ======== "Final perfect solution version"

使用Dva项目作Antd的Demo

51数码管显示

Explore the efficiency of make_shared

【正点原子】sys.c、sys.h位带操作的简单应用

js advanced study notes (detailed)
随机推荐
Insertion Sort in Classic Sort
VsCode连接远程服务器并修改文件代码
QT serial and CAN dynamic real-time display the log data
表格比手机屏幕宽时不压缩,可左右滚动,格子内容不换行
自定义类加载器
Vim查找字符
sizeof和strlen最全区别,以及指针和数组运算解析
创建快捷方式时如何不带“快捷方式“后缀字样?
How to open terminal in VsCode
Acwing刷题第一节
survivor区对象何时进入老年代(深入理解jvm中表述不准确的地方)
测试题第三个
ES6 syntax notes (ES6~ES11)
conda常用命令总结(持续更新)
通过位运算进行字符大小写转换
华秋第八届硬创赛与安创加速器达成战略合作,助力硬科技项目成长
【江科大自化协stm32F103c8t6】笔记之【入门32单片机及TIM定时中断初始化参数配置】
Machine Learning, Deep Learning Based on MATLAB 2021b
闭包和作用域(你不知道的JS自用笔记)
QT serialization 1: readyRead() function, the solution to incomplete data subcontracting