while(!feof(from)){
if(fread(&ch, sizeof(char), 1, from) != 1 && ferror(from)){
printf("%s ", argv[1]);
puts("read err");
return -1;
}

ch = ch ^ *key++;
if(!*key) key = (char *) argv[3];

if(!feof(from)){
if(fwrite(&ch, sizeof(char), 1, to) != 1){
printf("%s ", argv[2]);
puts("write err");
return -1;
}
}
}