Я экспериментирую с fgets вместо жесткого кодирования массива с программой, которая принимает открытый текст и ввод ключа и возвращает поток ключей и зашифрованный текст. Использование fgets для сканирования ключа от пользователя каким-то образом изменяет вывод, чтобы не печатать поток ключей, а только сам ключ. Единственное, что я изменил, это вместо того, чтобы жестко кодировать строку ключа с помощью массива, у меня есть пользователь, который вводит ключ с помощью fgets.
Жестко закодировано (фрагмент):
#include <stdio.h>
#include <string.h>
int main(void)
{
char msg[] = "THECRAZYPROGRAMMER";
char key[] = "HELLO";
int msgLen = strlen(msg), keyLen = strlen(key), i, j;
char newKey[msgLen], encryptedMsg[msgLen], decryptedMsg[msgLen];
//generating new key
for(i = 0, j = 0; i < msgLen; ++i, ++j){
if(j == keyLen)
j = 0;
newKey[i] = key[j];
}
newKey[i] = '\0';
printf("Original Message: %s", msg);
printf("\nKey: %s", key);
printf("\nNew Generated Key: %s", newKey);
}
fgets ( фрагмент):
#include <stdio.h>
#include <string.h>
int main(void)
{
char msg[512];
char key[512];
int msgLen = strlen(msg), keyLen = strlen(key), i, j;
char newKey[msgLen], encryptedMsg[msgLen], decryptedMsg[msgLen];
fgets(msg, 512, stdin);
fgets(key, 512, stdin);
//generating new key
for(i = 0, j = 0; i < msgLen; ++i, ++j){
if(j == keyLen)
j = 0;
newKey[i] = key[j];
}
newKey[i] = '\0';
printf("Original Message: %s", msg);
printf("\nKey: %s", key);
printf("\nNew Generated Key: %s", newKey);
}