programme d’encodage utilisant getchar à partir de l’argument de ligne de commande et putchar à envoyer pour décoder

J’essaie donc de créer un programme d’encodage / décodage. Jusqu’à présent, je suis coincé dans la partie encodée. Je dois pouvoir obtenir un message à partir des arguments de la ligne de commande et le coder à l’aide d’un nombre aléatoire spécifié. Ce numéro sera donné par l’utilisateur comme premier argument.

Mon idée est d’obtenir l’int de getchar et d’y append un résultat aléatoire. Je veux ensuite le retourner à la sortie standard pour qu’un autre programme puisse le lire comme un argument pour le décoder en utilisant le même germe Jusqu’à présent, je ne parviens pas à faire fonctionner le putchar correctement. Des idées sur ce que je devrais réparer ou concentrer? Merci d’avance!

#include  #include  int main(int argc, char *argv[]) { int pin, charin, charout; // this verifies that a key was given at for the first argument if (atoi(argv[1]) == 0) { printf("ERROR, no key was found.."); return 0; } else { pin = atoi(argv[1]) % 27; // atoi(argv[1])-> this part should seed the srand } while ((getchar()) != EOF) { charin = getchar(); charout = charin + pin; putchar(charout); } } 

Vous ne devez pas appeler getchar() deux fois, il consum les caractères du stream et vous les perdez, essayez comme ça

 while ((charin = getchar()) != EOF) { charout = charin + pin; putchar(charout); } 

Aussi, au lieu de vérifier si atoi() renvoie 0 qui est un nombre et une graine valide, faites ceci

 char *endptr; int pin; if (argc < 2) { fprintf(stderr, "Wrong number of parameters passed\n"); return -1; } /* strtol() is declared in stdlib.h, and you already need to include it */ pin = strtol(argv[1], &endptr, 10); if (*endptr != '\0') { fprintf(stderr, "You must pass an integral value\n"); return -1; }