2022嵌入式7-27作业

fgetc

size.c(计算文件大小)

代码块

//用fgetc计算文件大小
int size(FILE *fp)
{
	int size = 0;				//计算大小
	char c;
	rewind(fp);					//重置指针指向开头
	while(1)
	{
		c = fgetc(fp);
		if(c == EOF)
			break;
		size++;
	}
	return size;
}


line.c(计算行数)

//用fgetc计算文件行数
int line(FILE *fp)
{
	int line = 0;
	int n = 0;					//判断该行是否有内容
	char c;
	rewind(fp);					//重置指针指向开头
	while(1)
	{
		c = fgetc(fp);
		if(c == EOF)
			break;
		else if(c != '\n')
			n++;
		if(c == '\n' && n!=0){
			line++;
			n = 0;
		}
	}
	return line;
}

fgets

size_s.c(计算文件大小)

//用fgets计算文件大小
int size_s(FILE *fp)
{
	char str[20];
	int len = 0;
	rewind(fp);						//重置指针指向开头
	while(fgets(str, sizeof(str), fp) != NULL)
		len = len + strlen(str);
	
	return len;

}

line_s.c(计算行数)

//用fgets计算行数
int line_s(FILE *fp)
{
	int line = 0;
	char str[20];
	rewind(fp);
	while(fgets(str, sizeof(str), fp) != NULL)
		line++;
	return line;
}

copy.c(拷贝函数)


//拷贝文件
void copy(FILE *fp_r, FILE *fp_w)
{
	char str[20];
	rewind(fp_r);
	while(1)
	{
		
		if(fgets(str, sizeof(str), fp_r) == NULL)			
			break;
		else
			fputs(str, fp_w);
	}
}

homework.h(库函数)


#ifndef __HOMEWORK_H__
#define __HOMEWORK_H__

//用fgetc计算文件大小
int size(FILE *fp);

//用fgetc计算文件行数
int line(FILE *fp);

//拷贝文件
void copy(FILE *fp_r, FILE *fp_w);

//用fgets计算文件大小
int size_s(FILE *fp);

//用fgets计算行数
int line_s(FILE *fp);

#endif

homework.c(封装函数)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"homework.h"

//用fgetc计算文件大小
int size(FILE *fp)
{
	int size = 0;
	char c;
	rewind(fp);
	while(1)
	{
		c = fgetc(fp);
		if(c == EOF)
			break;
		size++;
	}
	return size;
}

//用fgetc计算文件行数
int line(FILE *fp)
{
	int line = 0;
	int n = 0;					//判断该行是否有内容
	char c;
	rewind(fp);
	while(1)
	{
		c = fgetc(fp);
		if(c == EOF)
			break;
		else if(c != '\n')
			n++;
		if(c == '\n' && n!=0){
			line++;
			n = 0;
		}
	}
	return line;
}

//拷贝文件
void copy(FILE *fp_r, FILE *fp_w)
{
	char str[20];
	rewind(fp_r);
	while(1)
	{
		
		if(fgets(str, sizeof(str), fp_r) == NULL)
			break;
		else
			fputs(str, fp_w);
	}
}

//用fgets计算文件大小
int size_s(FILE *fp)
{
	char str[20];
	int len = 0;
	rewind(fp);
	while(fgets(str, sizeof(str), fp) != NULL)
		len = len + strlen(str);
	
	return len;
}

//用fgets计算行数
int line_s(FILE *fp)
{
	int line = 0;
	char str[20];
	rewind(fp);
	while(fgets(str, sizeof(str), fp) != NULL)
		line++;
	return line;
}


main.c(主函数)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"homework.h"

int main(int argc, const char *argv[])
{
	FILE *fp = fopen(argv[1], "r");
	if(NULL == fp)
	{
		perror("fopen");
		return -1;
	}
	int s = size(fp);
	int l = line(fp);
	int S = size_s(fp);
	int L = line_s(fp);
	printf("%d\n%d\n%d\n%d\n", s, l, S, L);
	FILE *fp_w = fopen(argv[2], "w");
	if(NULL == fp_w)
	{
		perror("fopen");
		return -1;
	}
	copy(fp, fp_w);
	rewind(fp);

	fclose(fp);
	return 0;
}

部分结果展示

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值