XOR над двумя char - C (СИ)
Формулировка задачи:
Привествую!
Задачка сделать xor над двумя char. Естественно по простому как в php $string1^$string2 не получается..
надо конвертить что ли, помогите плиз
Исходное такое:
Вот на строку с "don't work" и ругается.
Т.е. это как бы простой шифрователь прочитало файл названием argv[1] (с просто текстом или зашифрованным текстом) - проксорило c "ключем" argv[2] (8 символов текста) и показало тут же результат, т.е. если в файле будет ранее "зашифрованная" xor каша то програмулька выведет расшифрованный читаемый текст.
Как правильно сделать final = result ^ argv[2]; ?
Спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(int argc, char *argv[])
{
FILE *file;
char *file_name = argv[1];
char load_string[8] = "none";
char *result;
char *final;
file = fopen( file_name , "r" );
if( file != 0 )
{
do {.
result = fgets( load_string, 8 , file );
final = result; // it's work.
final = result ^ argv[2]; // don't work
printf("%s",final);
} while(!feof(file));
fclose(file);
}
}$ gcc file.c file.c: In function ‘main’: file.c:19:20: error: invalid operands to binary ^ (have ‘char *’ and ‘char *’)
Решение задачи: «XOR над двумя char»
textual
Листинг программы
while ( (a=fgetc (file)) != EOF ) {
p = pass[n];
b=fooi(a,p,buf);
fputc (b, fileout);
n++;
if (n==len) n=0;
}
Объяснение кода листинга программы
На основании предоставленного кода можно сделать следующие выводы:
a— это переменная типаchar, которая получает значение из файла с помощью функцииfgetc().p— это переменная типаchar, которая получает значение из массиваpass[].b— это переменная типаchar, которая получает значение от функцииfooi(), которая принимает три аргумента типаchar:a,pиbuf.fileout— это файл, в который записывается значение переменнойbс помощью функцииfputc().n— это переменная типаint, которая увеличивается на единицу после каждой итерации цикла.len— это константа типаint, которая определяет размер массиваpass[].if (n==len) n=0;— это условие, которое проверяет, достиг лиnзначенияlen, и если да, то устанавливаетnравным нулю, чтобы начать цикл сначала. Следовательно, код выполняет XOR над двумя символами, которые считываются из файла и массива, и записывает результат в другой файл. Цикл продолжается до тех пор, пока не будет достигнут конец файла.