2015-11-28 4 views
0

Я нашел этот код в некоторых книгах:Как сделать файл ввода-вывода на C?

enter code here 
    int main (int argc, char *argv[]) 
    { 
    FILE *in, *out; 
    char *key; 
    int byte; 

    if (argc !=4) { 
    printf ("Usage: xorer <key> <input_file> <output_file>\n"); 
     return 1; 
     } 

     key = argv[1]; 

     if ((in = fopen(argv[2], "rb")) != NULL) { 
     if ((out = fopen(argv[3], "wb")) != NULL) { 

     while ((byte = getc(in)) != EOF) 
     { 
     if (!*key) key = argv[1]; 
     byte^= *(key++); 
     putc(byte,out); 
    } 

    fclose(out); } 
    fclose(in); } 

    return 0; 

}

Этот код должен делать следующую вещь (простой криптографию с операции XOR):

input = ]VTYJQC]aGC_PDJ[{RJ[EEMLA //encrypted key 

key = creature_creautre_creature // string for crypting 
-------------------------------- 
Output >$18>$18>$18>$18>$18>$18>$ // ASCII symbols for XOR crypting 

Но код, ничего не делая (компиляции без ошибок)! Я создал файлы input.data, input.in в каталоге кода. Это не работает. Скажите, пожалуйста, как делать input_file и output_file?

+5

«Мой код не работает» не является ** конкретной ** проблемой. Пожалуйста, предоставьте дополнительную информацию. Используйте отладчик. – Olaf

ответ

0

Если вы собрали код правильно, то выполнение кода без аргументов будет печатать информацию об использовании, которая также находится в самом исходном коде:

Usage: xorer <key> <input_file> <output_file>\n 

Итак, если вы хотите, чтобы зашифровать (расшифровать файл) называется input.txt, найденный в текущем каталоге, используя клавишу «ABC» и записать вывод (шифрованные/расшифрованные данные) в файл output.txt, вы будете использовать программу следующим образом:

xorer ABC input.txt output.txt 

Вы найдете зашифрованный (расшифрованный) файл output.txt в текущем ужасном ctory.

Это должно ответить на ваш конкретный вопрос об обеспечении ввода и вывода в программу. Если у вас есть другие связанные вопросы, сообщите нам об этом.