1.用fgetc计算一个文件的大小,要求封装成函数
#include <stdio.h>
int count(FILE* fp){ //定义计数函数
char c=0;
int count=0;
while((c=fgetc(fp))!=EOF){
printf("%c",c);
count++;
}
return count;
}
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./txt.txt","r"); //txt.txt文件为自己输入文件
if(fp==NULL){
perror("fopen");
return -1;
}
int num=count(fp);
printf("该文件大小为%d字节\n",num);
return 0;
}
代码结果检验:
2.用fgetc计算一个文件有几行,要求封装成函数(linux操作系统以\n结尾,就算是最后一行也有一个'\n')
#include <stdio.h>
int count(FILE* fp){
char c=0;
int count=0;
while((c=fgetc(fp))!=EOF){
printf("%c",c);
if(c=='\n'){
count++;
}
}
return count;
}
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./txt.txt","r");
if(fp==NULL){
perror("fopen");
return -1;
}
int num=count(fp);
printf("该文件有%d行\n",num);
return 0;
}
代码结果检验:
3.用fgets和fputs实现,拷贝一个文件,例如将1.c的内容拷贝给2.c
#include <stdio.h>
int main(int argc, const char *argv[])
{
FILE* fp1=fopen("./test3.1.txt","r");
if(NULL==fp1){
perror("fp1");
return -1;
}
FILE* fp2=fopen("./test3.2.txt","w");
if(NULL==fp2){
perror("fp2");
return -1;
}
char arr[1000];
while(fgets(arr,sizeof(arr),fp1)!=NULL){
fputs(arr,fp2);
}
return 0;
}
代码结果检验:
运行后,设定的test3.1.txt和test3.2.txt文件大小一致。
4.用fgets计算一个文件的大小,要求封装成函数
#include <stdio.h>
int count(FILE* fp){
char arr[2];
int count=0;
while(fgets(arr,sizeof(arr),fp)!=NULL){
count++;
}
return count;
}
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./txt.txt","r");
if(fp==NULL){
perror("fopen");
return -1;
}
int num=count(fp);
printf("该文件大小为%d字节\n",num);
return 0;
}
代码检验:(所调用的文件仍然是题1.2所使用的文件,所以空间大小一致)
5.用fgets计算一个文件有几行,要求封装成函数(linux操作系统以\n结尾,就算是最后一行也有一个'\n')
#include <stdio.h>
int count(FILE* fp){
char arr[2];
int count=0;
while(fgets(arr,sizeof(arr),fp)!=NULL){
if(arr[0]=='\n'){
count++;
}
}
return count;
}
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./txt.txt","r");
if(fp==NULL){
perror("fopen");
return -1;
}
int num=count(fp);
printf("该文件有%d行\n",num);
return 0;
}
代码检验:(所调用的文件仍然是题1.2所使用的文件,所以行数一致)