标准IO函数运用
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;
}
部分结果展示