Ich habe an einem Caesar-Chiffre-Problem für ein Problem-Set gearbeitet, aber ich stieß auf ein kleines Problem. Immer wenn der Chiffrewert mehr die Ascii von 'z' bekommt, möchte ich, dass er auf 'a' zurückspringt, aber ich bin nicht in der Lage herauszufinden, wie das geht. Hier ist der Code:Caesar-Chiffre-Code funktioniert nicht richtig C
#include <cs50.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, string argv[])
{
if(argc !=2 && !isdigit(argv[1]))
{
return 1;
}
//convert input to int and get the string
int k = atoi(argv[1]);
k=k%26;
//printf("%d" ,k);
//get he text
char *s;
s=GetString();
int i, n=strlen(s);
//checking each character
for(i=0;i<n;i++)
{
if(s[i]==' ')
{
s[i]=' ';
}
else
{
s[i]=s[i]+k;
}
printf("%c" ,s[i]);
}
}
Dies ist ein recht einfach Code. Jede Hilfe wird geschätzt.
P.S. Hier ist ein Beispiel mit der Taste 4.
input- Vinay Dawani
output- Zmre} He{erm
Was soll mit 'z' und' Z' geschehen, wenn der Schlüssel 4 ist? –
Willkommen bei Stack Overflow. Bitte lesen Sie die [Über] Seite bald. Es gibt eine Menge Fragen über Caesar-Chiffre-Implementierungen auf SO. Die meisten von ihnen würden Ihnen Wege aufzeigen, wie Sie Ihr Problem lösen können. Sie sehen sich (einige von ihnen) wirklich an. Es sieht nicht so aus, als hättest du versucht, mit dem Problem fertig zu werden - du weißt nur, dass du es hast. Sie sollten zeigen, was Sie versucht haben. (Außerdem müssen Sie sich irgendwann entscheiden, was mit Ziffern und Interpunktion zu tun ist. Im Moment behandeln Sie sie wie Buchstaben, was wahrscheinlich nicht die beste Wahl ist.) –
Schauen Sie in dieses Snippet: _http: //ideone.com/QwOl1s_ –