Buongiorno, scrivo in C, e ho problemi con il seguente esercizio:
"Data una chiave di crittazione costituita da una parola di 3 lettere, la crittazione di una frase avviene aggiungendo al codice ASCII della lettera i-esima il codice ASCCI della lettera (i%3)-esima della chiave. Scrivere una libreria in cui sia presente una funzione di crittazione (che prenda in input una frase, la chiave di crittazione e ritorni la frase crittata). Scrivere un header per facilitare l'utilizzo della libreria. Scrivere un programma per testare il funzionamento delle funzioni di libreria."
Ho pensato alla seguente soluzione, però, quando testo il programma, sul terminale non mi appaiono le scritture corrispondenti ai %s, %d.. Credo che il difetto sia nel malloc.. Potreste aiutarmi? Grazie per la disponibilità.
#include <string.h>
#include <stdlib.h>
char *messaggio(char *frase, char chiave []) {
int i;
int len = strlen(frase);
char *new = (char *) malloc(len+1);
for(i=0; i<=len; i++) {
new = frase + chiave[i%3];
}
return new;
}
Ricavo la libreria "es4.h":
extern char *messaggio(char *frase, char key[]);
Ed, infine, passo al main:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "es4.h"
int main() {
char word[20];
char key[3];
char *str2;
int i;
printf("inserisci frase: ");
scanf("%[^\n]", &word);
getchar();
printf("inserisci chiave: ");
scanf("%[^\n], &key);
str2 = messaggio(word, key);
printf("la frase crittata e' %s\n", str2);
free(str2);
return 0;
}