#include #include void encipher(FILE *out, FILE *in, char *key) { size_t klen = strlen(key); unsigned char ch; size_t i = 0; while(fread(&ch, 1, 1, in)) { ch ^= key[i++]; fwrite(&ch, 1, 1, out); i %= klen; } } int main(int argc, char **argv) { if(argc > 3) { FILE *in = fopen(argv[1], "rb"); if(in != NULL) { FILE *out = fopen(argv[2], "wb"); if(out != NULL) { encipher(out, in, argv[3]); if(ferror(out)) { fputs("Output error.\n", stderr); } fclose(out); } else { fputs("Can't open output file.\n", stderr); } if(ferror(in)) { fputs("Input error.\n", stderr); } fclose(in); } else { fputs("Can't open input file.\n", stderr); } } else { fputs("Arguments required are: inputfile outputfile key.\n", stderr); } return 0; }