Ce code est supposé chiffrer le texte en fonction de la clé d'entrée de l'argument de commande et imprimer le texte chiffré. Cependant, il n'imprime pas les espaces et la ponctuation. Quelqu'un peut-il expliquer ce qui ne va pas?Le programme n'imprime pas d'espaces et de perforation
Exemple d'utilisation:
$ ./caesar 12
world, say hello!
iadxp, emk tqxxa!
$
code:
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
int main(int argc, string argv[])
{
if (argc>2 || argc<2)
{
printf("Please enter a valid argument.\n");
return 1;
}
string input = GetString();
int key = atoi(argv[1]);
for(int i = 0, l = strlen(input); i < l; i++)
{
//if(isalpha(input[i]))
//{
char c = input[i];
int letternum = c;
if(isupper(c))
{
int upper = 'A';
int alphanum = letternum - upper;
int newint = (alphanum + key) % 26;
newint = newint + upper;
char newchar = newint;
printf("%c", newchar);
}
if(islower(c))
{
int lower = 'a';
int alphanum = letternum - lower;
int newint = (alphanum + key) % 26;
newint = newint + lower;
char newchar = newint;
printf("%c", newchar);
}
//}
}
printf("\n");
}
Où est le code et nous montrer comment vous l'exécutez et la sortie attendue. – sjsam
Il est dans la ligne 42 (il est toujours), colonne 23. Sérieusement: Vous dites ce qui ne va pas ce que vous attendez et montrez votre code. Voir [demander]. – Olaf
Envisagez d'utiliser 'isalpha' pour déterminer si le caractère est une lettre à chiffrer, sinon le caractère" tel quel "est généré. –