作业
1.fgetc和fputc拷贝文件
将1.txt文件内容拷贝到2.txt中,文本内容如下:
#include<myhead.h>
int main(int argc, const char *argv[])
{
//将1.txt内容拷贝到2.txt中
if(argc !=3)
{
printf("外部参数错误\n");
return -1;
}
FILE *fp1=fopen("./1.txt","r");
if(fp1 == NULL)
{
perror("fp1");
return -1;
}
FILE *fp2=fopen("./2.txt","w");
if(fp2 == NULL)
{
perror("fp2");
return -1;
}
while(1)
{
char buff = fgetc(fp1);
if(buff == EOF)
{
break;
}
fputc(buff,fp2);
}
fclose(fp1);
fclose(fp2);
printf("拷贝成功\n");
fp2=fopen("./2.txt","r");
if(fp2 == NULL)
{
perror("fp2");
return -1;
}
while(1)
{
char rev = fgetc(fp2);
if(rev == EOF)
{
break;
}
fputc(rev,stdout);
}
fclose(fp2);
return 0;
}
运行结果:
2.fgets获取文件的行号
文件内容如下:
#include<myhead.h>
int main(int argc, const char *argv[])
{
if(argc != 2)
{
printf("外部参数错误\n");
return -1;
}
//以只读的形式打开文件
FILE *fp = fopen(argv[1], "r");
if(fp == NULL)
{
perror("fp");
return -1;
}
char buf[100];
int count = 0;
while(1)
{
char *ptr = fgets(buf, sizeof(buf), fp);
if(ptr == NULL)
{
break;
}
if(buf[strlen(buf)-1] == '\n')
{
count++;
}
}
printf("该文件一共有%d行\n", count);
fclose(fp);//关闭文件
return 0;
}
运行结果:
3.fgets和fputs拷贝文件
将1.txt文件内容拷贝到2.txt中,文本内容如下:
//fgets和fputs拷贝文件
//将1.txt文件内容拷贝到2.txt中
#include<myhead.h>
int main(int argc, const char *argv[])
{
if(argc != 3)
{
printf("外部参数错误\n");
return -1;
}
FILE *fp1= fopen(argv[1], "r");
if(fp1 == NULL)
{
printf("fp1");
return -1;
}
FILE *fp2 = NULL;
if((fp2 = fopen(argv[2], "w")) == NULL)
{
perror("fp2");
return -1;
}
char buf[100];
while(1)
{
char *ptr = fgets(buf, sizeof(buf), fp1);
if(ptr == NULL)
{
break;
}
fputs(buf, fp2);
}
printf("拷贝成功\n");
fclose(fp1);
fclose(fp2);
return 0;
}
运行结果:
知识梳理
标准IO
文件IO