XOR над двумя char - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привествую! Задачка сделать xor над двумя char. Естественно по простому как в php $string1^$string2 не получается.. надо конвертить что ли, помогите плиз Исходное такое:
#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 *’)
Вот на строку с "don't work" и ругается. Т.е. это как бы простой шифрователь прочитало файл названием argv[1] (с просто текстом или зашифрованным текстом) - проксорило c "ключем" argv[2] (8 символов текста) и показало тут же результат, т.е. если в файле будет ранее "зашифрованная" xor каша то програмулька выведет расшифрованный читаемый текст. Как правильно сделать final = result ^ argv[2]; ? Спасибо.

Решение задачи: «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;
}

Объяснение кода листинга программы

На основании предоставленного кода можно сделать следующие выводы:

  1. a — это переменная типа char, которая получает значение из файла с помощью функции fgetc().
  2. p — это переменная типа char, которая получает значение из массива pass[].
  3. b — это переменная типа char, которая получает значение от функции fooi(), которая принимает три аргумента типа char: a, p и buf.
  4. fileout — это файл, в который записывается значение переменной b с помощью функции fputc().
  5. n — это переменная типа int, которая увеличивается на единицу после каждой итерации цикла.
  6. len — это константа типа int, которая определяет размер массива pass[].
  7. if (n==len) n=0; — это условие, которое проверяет, достиг ли n значения len, и если да, то устанавливает n равным нулю, чтобы начать цикл сначала. Следовательно, код выполняет XOR над двумя символами, которые считываются из файла и массива, и записывает результат в другой файл. Цикл продолжается до тех пор, пока не будет достигнут конец файла.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы