本帖最后由 niucaidi 于 2015-3-18 13:17 编辑
本渣学C语言10天了,看到一个题目,要求写一个可以复制任意文本文件的程序!
一开始我觉得很简单,然后我花了整整3个小时零7分钟!完成了这个作品!表示学渣已经化成灰了....以后再也不敢随随便便遇到个问题就想到用for循环来解决了,用for要写哭
[Asm] 纯文本查看 复制代码 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
int a = 0,b = 0,c = 0;
char ch = 0;
fpos_t wenjiandaxiao;
char *zifu = NULL;
FILE *pwenjian = NULL;
FILE *pxinwenjian = NULL;
pwenjian = fopen(argv[1],"r+");
fseek(pwenjian,0,SEEK_END);//将文件指针设置在文件结尾
fgetpos(pwenjian,&wenjiandaxiao);//获取文件指针的位置,即文件所占字节数
zifu = (char* )malloc(wenjiandaxiao);//给zifu分配一个和*argv指向的文件大小相同的内存空间
memset(zifu,wenjiandaxiao,0);
if(!pwenjian)
{
printf("文件打开失败,请重试!\n");
return 0;
}else printf("文件打开成功\n");
rewind(pwenjian);
fread(zifu,wenjiandaxiao,1,pwenjian);//从第0个位置开始读取所有的字符
printf("%s\n",zifu );
pxinwenjian = fopen(argv[2],"w");
fputs(zifu,pxinwenjian);
printf("文件写入成功\n\n");
rewind(pwenjian);
rewind(pxinwenjian);
fread(zifu,wenjiandaxiao,1,pwenjian);
printf("原文件的内容为:%s\n\n\n",zifu );
fread(zifu,wenjiandaxiao,1,pxinwenjian);
printf("新文件的内容为:%s\n",zifu );
printf("恭喜您,文件复制成功!\n");
fclose(pwenjian);
fclose(pxinwenjian);
free(zifu);
return 0;
}
总结:写代码真的是一件非常考验耐心的事情,从一开始的写完一个大致,到运行文件出错,然后把全部的代码注释掉,一行一行的恢复!找出问题出在哪一行代码!就这样花了3个多小时,在这个过程中等于把学到的大部分知识又过了一遍,还改变了很多思路,从最开始的觉得用for循环一个字符一个字符复制方便,最后出现了很多一时半会解决不了的问题觉得此方法行不通,改用适合的函数写。而又因为知识对函数的理解不深刻又去百度了很久,把一些思路全部理顺了!完成之后有一种我能行的成就感~大家一起加油吧!
本程序根本没什么技术含量,C语言最基础的应用罢了,但是作为一个渣有点小开心就想和大家分享,不要嫌弃我
|