作业内容:
1.用fgetc和fputc实现,拷贝一个文件,例如将1.c的内容拷贝给2.c
2.用fgetc计算一个文件的大小,要求封装成函数
3.用fgetc计算一个文件有几行,要求封装成函数(linux操作系统以\n结尾,就算是最后一行也有一个'\n')
4.用fgets和fputs实现,拷贝一个文件,例如将1.c的内容拷贝给2.c
5.用fgets计算一个文件的大小,要求封装成函数
6.用fgets计算一个文件有几行,要求封装成函数(linux操作系统以\n结尾,就算是最后一行也有一个'\n')
1.主函数:
#include <stdio.h>
int main(int argc, const char *argv[])
{
//以读的方式打开文件
FILE* fp1 = fopen("./1.c","r");
if(NULL == fp1)
{
perror("fopen");
return -1;
}
//以写的方式打开文件
FILE* fp2 = fopen("./2.c","w");
if(NULL == fp2)
{
perror("fopen");
return -1;
}
//1.c内容拷贝到2.c上
char c = 0;
while((c=fgetc(fp1)) != EOF)
{
fputc(c,fp2);
}
//关闭文件
fclose(fp1);
fclose(fp2);
return 0;
}
代码测试结果:
2.主函数:
#include <stdio.h>
int file_size(FILE *fp)
{
int size = 0;
char c = 0;
while((c=fgetc(fp)) != EOF)
{
size++;
}
return size;
}
int main(int argc, const char *argv[])
{
//以读的方式打开文件
FILE* fp = fopen("./1.c","r");
if(NULL == fp)
{
perror("fopen");
return -1;
}
int n = file_size(fp);
printf("文件大小为%d字节\n",n);
//关闭文件
fclose(fp);
return 0;
}
代码测试结果:
3.主函数:
#include <stdio.h>
int line_num(FILE* fp)
{
int num = 0;
char c = 0;
while((c=fgetc(fp)) != EOF)
{
if(c==10) //换行符'\n'的ascii码为10
{
num++;
}
}
return num;
}
int main(int argc, const char *argv[])
{
//以读的方式打开文件
FILE* fp = fopen("./1.c","r");
if(NULL == fp)
{
perror("fopen");
return -1;
}
int num = line_num(fp);
printf("文件有%d行\n",num);
//关闭文件
fclose(fp);
return 0;
}
代码测试结果:
4.主函数:
#include <stdio.h>
int main(int argc, const char *argv[])
{
//以读的方式打开文件
FILE *fp1 = fopen("./1.c","r");
if(NULL == fp1)
{
perror("fopen 1.c");
return -1;
}
FILE *fp2 = fopen("./2.c","w");
if(NULL == fp2)
{
perror("fopen 2.c");
return -1;
}
char str[20] = "";
while(fgets(str,sizeof(str),fp1) != NULL)
{
fputs(str,fp2);
}
//关闭文件
fclose(fp1);
fclose(fp2);
return 0;
}
代码测试结果:
5.主函数:
#include <stdio.h>
#include <string.h>
int file_size(FILE* fp)
{
char str[20] = "";
int size = 0;
while(fgets(str,sizeof(str),fp) != NULL)
{
size+=strlen(str);
}
return size;
}
int main(int argc, const char *argv[])
{
//以读的方式打开文件
FILE* fp = fopen("./1.c","r");
if(NULL == fp)
{
perror("fopen 1.c");
return -1;
}
int size = file_size(fp);
printf("文件大小为%d字节\n",size);
//关闭文件
fclose(fp);
return 0;
}
代码测试结果:
6.主函数:
#include <stdio.h>
int line_num(FILE* fp)
{
int num = 0;
char str[20] = "";
while(fgets(str,sizeof(str),fp) != NULL)
{
int i = -1;
while(str[++i]!='\n' && i<20);
if(str[i]=='\n')
{
num++;
}
}
return num;
}
int main(int argc, const char *argv[])
{
//以读的方式打开文件
FILE* fp = fopen("./1.c","r");
if(NULL == fp)
{
perror("fopen 1.c");
return -1;
}
int num = line_num(fp);
printf("文件有%d行\n",num);
//关闭文件
fclose(fp);
return 0;
}
代码测试结果: