Я должен создать программу, которая берет входные данные из файла, генерирует их шестнадцатеричное значение и складывает их шестнадцатеричные значения вместе (8-битная контрольная сумма).
Ввод:
while(fscanf(ifp, "%c", buffer) != EOF)
{
input[i] = *buffer;
printf("%02x", input[i]);
i++;
}
Например, если вход «a», начальный выход должен быть: 610a (0a для символа новой строки)
После их сложения вы получите 6б.
И с «aa» начальный вывод должен быть: 61610a и «cc» как результат сложения.
Пока что я создал программу, которая читает char-by-char и сохраняет ее. Затем я сделал рекурсивную функцию для добавления символов вместе
char addChar(char *input, int i, int size ) {
if( i == size ) {
return 0;
}
return input[i] + addChar(input, i+1, size);
}
и затем я печатаю.
printf("%02x\n", addChar(input, i, size)));
Но когда я запускаю программу, я продолжаю получать кучу f перед некоторыми результатами. Я знаю, что это переполнение от сложения их вместе, но как мне избавиться от этого.
Ввод: а, аа, ааа, аааа, ааааа
[Клеммный выход] [1]
MacbookPro:CheckSum $ ./a.out i1.txt 8
610a
6b
MacbookPro:CheckSum $ ./a.out i2.txt 8
61610a
ffffffcc
MacbookPro:CheckSum $ ./a.out i3.txt 8
6161610a
2d
MacbookPro:CheckSum $ ./a.out i4.txt 8
616161610a
ffffff8e
MacbookPro:CheckSum $ ./a.out i5.txt 8
61616161610a
ffffffef