拷贝一
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./1.txt","r");
FILE* fp1=fopen("./2.txt","w+");
printf("文件拷贝前:\n");
char b;
while(1)
{
b=fgetc(fp1);
if(b==EOF)
break;
printf("%c",b);
}
putchar(10);
printf("文件拷贝后:\n");
char temp;
int a;
while(1)
{
a=fscanf(fp,"%c",&temp);
if(a==EOF)
{
break;
}
printf("%c",temp);
fprintf(fp1,"%c",temp);
}
fclose(fp);
fclose(fp);
return 0;
}
运行效果
ubuntu@ubuntu:~/文件IO/01$ gcc 01main.c
ubuntu@ubuntu:~/文件IO/01$ ./a.out
文件拷贝前:
文件拷贝后:
生鱼片其实是死鱼片
三十年河东三十年河西,莫欺少年穷.
ubuntu@ubuntu:~/文件IO/01$
拷贝二
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./1.txt","r");
FILE* fp1=fopen("./2.txt","w+");
printf("文件拷贝前:\n");
char b;
while(1)
{
b=fgetc(fp1);
if(b==EOF)
break;
printf("%c",b);
}
putchar(10);
printf("文件拷贝后:\n");
char temp;
char a;
while(1)
{
a=fgetc(fp);
if(a==EOF)
{
break;
}
printf("%c",a);
fputc(a,fp1);
}
fclose(fp);
fclose(fp);
return 0;
}
运行效果
ubuntu@ubuntu:~/文件IO/01$ gcc 01main.c
ubuntu@ubuntu:~/文件IO/01$ ./a.out
文件拷贝前:
文件拷贝后:
生鱼片其实是死鱼片
三十年河东三十年河西,莫欺少年穷.
ubuntu@ubuntu:~/文件IO/01$
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./1.txt","r");
FILE* fp1=fopen("./2.txt","w+");
printf("文件拷贝前:\n");
char b;
while(1)
{
b=fgetc(fp1);
if(b==EOF)
break;
printf("%c",b);
}
putchar(10);
printf("文件拷贝后:\n");
char temp;
char a[100];
char *aa;
while(1)
{
aa=fgets(a,sizeof(a),fp);
if(aa==NULL)
break;
printf("%s",aa);
fputs(aa,fp1);
}
fclose(fp);
fclose(fp);
return 0;
}
ubuntu@ubuntu:~/文件IO/01$ ./a.out
文件拷贝前:
文件拷贝后:
生鱼 片其实是 死鱼片
三 十年河东三十 年河西,莫欺少年穷.
我才是这世界 唯一的真理;
ubuntu@ubuntu:~/文件IO/01$
问题测试
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./1.txt","r+");
if(fseek(fp,-2,SEEK_SET))
{
printf("失败\n");
}else
{
printf("成功\n");
}
fputc('b',fp);
fclose(fp);
return 0;
}
ubuntu@ubuntu:~/文件IO/01$ ./a.out
失败
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./1.txt","r+");
if(fseek(fp,2, SEEK_END))
{
printf("失败\n");
}else
{
printf("成功\n");
}
fputc('c',fp);
fclose(fp);
return 0;
}
cccaaba
^@^@c
后移动可以前面的会补充成未知的东西