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 над двумя символами, которые считываются из файла и массива, и записывает результат в другой файл. Цикл продолжается до тех пор, пока не будет достигнут конец файла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д