1、使用fgetc、fputc实现下面功能:
a.用fgetc和fputc实现,拷贝一个文件,例如将1.c的内容拷贝给2.c
b.用fgetc计算一个文件的大小,要求封装成函数
c.用fgetc计算一个文件有几行,要求封装成函数(linux操作系统以\n结尾,就算是最后一行也有一个'\n')
功能a:
#include <stdio.h>
#include <error.h>
int main(int argc, const char *argv[])
{
FILE *fp1=fopen(argv[1],"r");
FILE *fp2=fopen(argv[2],"w");
if(NULL==fp1 || NULL==fp2){
perror("fopen");
return -1;
}
char ch;
while((ch=fgetc(fp1))!=EOF){
fputc(ch,fp2);
}
puts("拷贝完成");
fclose(fp1);
fclose(fp2);
return 0;
}
测试:
功能b和功能c:
#include <stdio.h>
#include <error.h>
#include <stdlib.h>
//计算文件的大小(单位:字节)
int file_size(const char *pathname)
{
int count=0;
FILE *fp=fopen(pathname,"r");
if(NULL==fp){
perror("fopen");
printf("%s %d\n",__func__,__LINE__);
exit(-1);
}
while(fgetc(fp)!=EOF){
count++;
}
fclose(fp);
return count;
}
//计算文件的行数
int file_lines(const char *pathname)
{
int lines=0;
char ch;
FILE *fp=fopen(pathname,"r");
if(NULL==fp){
perror("fopen");
printf("%s %d\n",__func__,__LINE__);
exit(-1);
}
while((ch=fgetc(fp))!=EOF){
if(ch=='\n')
lines++;
}
fclose(fp);
return lines;
}
int main(int argc, const char *argv[])
{
int count;
printf("文件%s的大小为%d个字节\n",argv[1],file_size(argv[1]));
printf("文件%s有%d行\n",argv[1],file_lines(argv[1]));
return 0;
}
测试:
2、使用fgets、fputs实现下面功能:
a.用fgets和fputs实现,拷贝一个文件,例如将1.c的内容拷贝给2.c
b.用fgets计算一个文件的大小,要求封装成函数
c.用fgets计算一个文件有几行,要求封装成函数(linux操作系统以\n结尾,就算是最后一行也有一个'\n')
功能a:
#include <stdio.h>
#include <error.h>
int main(int argc, const char *argv[])
{
//实现拷贝功能
FILE *fp1=fopen(argv[1],"r");
FILE *fp2=fopen(argv[2],"w");
if(NULL==fp1 || NULL==fp2){
perror("fopen");
return -1;
}
char str[32];
while(fgets(str,sizeof(str),fp1)!=NULL){
fputs(str,fp2);
}
fputs("拷贝完成\n",stdout);
fclose(fp1);
fclose(fp2);
return 0;
}
测试:
功能b和功能c:
#include <stdio.h>
#include <error.h>
#include <stdlib.h>
#include <string.h>
//统计文件的大小(单位:字节)
int file_size(const char *pathname)
{
int count=0;
char str[32];
FILE *fp=fopen(pathname,"r");
if(NULL==fp){
perror("fopen");
printf("%s %d\n",__func__,__LINE__);
exit(-1);
}
while(fgets(str,sizeof(str),fp)!=NULL){
count+=strlen(str);
}
fclose(fp);
return count;
}
//统计文件的行数
int file_lines(const char *pathname)
{
int lines=0;
char str[32];
FILE *fp=fopen(pathname,"r");
if(NULL==fp){
perror("fopen");
printf("%s %d\n",__func__,__LINE__);
exit(-1);
}
while((fgets(str,sizeof(str),fp))!=NULL){
if(str[strlen(str)-1]=='\n')
lines++;
}
fclose(fp);
return lines;
}
int main(int argc, const char *argv[])
{
int count;
printf("文件%s的大小为%d个字节\n",argv[1],file_size(argv[1]));
printf("文件%s有%d行\n",argv[1],file_lines(argv[1]));
return 0;
}
测试: