这个就比上一个版本简单很多。
并且每次操纵的也都不是一行。
而是每次一个字符,这样效率就比较低并且编码方式 也是采用每次就加那么一个固定写死的字符。就比较坑。。。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MYKEY 6 #pragma warning(disable:4996) void readFile(FILE *); void copyFile(const FILE *, FILE *); void codeFile(const FILE *, FILE *); void decodeFile(const FILE *, FILE *); void progress(const int, const char **pras); int main(int argc,char **argv){ progress(argc, argv); //FILE *pf = fopen("code.txt", "r"); //FILE *pfw = fopen("decode.txt", "w"); //readFile(pf); //copyFile(pf,pfw); //decodeFile(pf, pfw); //char c = 0; //char cs[10] = { 0 }; 两种初始化方式 //c = getc(pf); // putc(c, pfw); getchar(); return 0; } void progress(const int parnum, const char **pracon){ if (parnum < 4){ printf("参数过少,需要四个"); } else if (parnum>4){ printf("参数过多,需要四个"); } else{ if (strcmp(pracon[1], "code") == 0){ //这里还能提取呢 //1 FILE *src = fopen(pracon[2], "r"); FILE *dest = fopen(pracon[3], "w"); codeFile(src, dest); fclose(src); fclose(dest); } else if (strcmp(pracon[1], "decode") == 0){ //这里还能提取呢 //1 FILE *src = fopen(pracon[2], "r"); FILE *dest = fopen(pracon[3], "w"); decodeFile(src, dest); fclose(src); fclose(dest); } else{ printf("第二个参数需要是:code 或者 decode"); } } } void decodeFile(const FILE *src, FILE *dest){ if (src != NULL&&dest != NULL){ char c = 0; while ((c = getc(src)) != EOF){ c -= MYKEY; putc(c, dest); } } } void codeFile(const FILE *src, FILE *dest){ if (src != NULL&&dest != NULL){ char c = 0; while ((c = getc(src)) != EOF){ c += MYKEY; putc(c, dest); } } } void copyFile(const FILE *src,FILE * dest){ //我说怎么总执行总不对劲,因为,每次还都输出了,这个文件。其实也就是因为每次都输出了这个文件。所以每次等到要拷贝的时候,文件已经移动到了文件的结尾了。所以每次拷贝都是空的文件。 if (src != NULL&&dest != NULL){ char c = 0; //char cs[10] = { 0 }; 两种初始化方式 printf("f1"); while((c=getc(src))!=EOF){ //printf("f1"); putc(c, dest); } printf("f2"); } else{ printf("到这了?"); } } void readFile(FILE *p){ if (p != NULL){ char c; while ((c = getc(p)) != EOF){ //这个目录好诡异。。。在同名子目录下,比如我们这个工程叫做文件复制,那么这个目录在 文件复制\文件复制下面。 printf("%c", c); } } else{ printf("没有"); } }
原文:http://www.cnblogs.com/letben/p/5246129.html