Ich versuche, eine Funktion, die eine Zeichenfolge und eine Zahl und wenn die Zahl größer ist die '0', so dass es die Caesar-Chiffre mit der Zeichenfolge und der Zahl, dass der Benutzer eingegeben. zum Beispiel -> 'stack' und die Nummer ist '3' -> 'uvdfn'. Wenn die Zahl '0' ist, wird die Zeichenfolge umgekehrt. zum Beispiel - 'stack' -> 'kcats'Problem mit Caesar-Chiffre und Reverse-Text-Programm
Ich weiß nicht, was ist das Problem mit dem Code, ich sehe nichts falsch.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void decryptText(char* encText, int n);
#define STR_SIZE 50
int main(void)
{
\t char str[STR_SIZE];
\t int num = 0;
\t printf("Please enter the string : ");
\t fgets(str, STR_SIZE, stdin);
\t printf("Please enter a number : ");
\t scanf("%d", &num);
\t decryptText(str, num);
system("PAUSE");
\t return 0;
}
void decryptText(char* encText, int n)
{
\t int i = 0;
\t int j = 0;
\t char temp = 0;
\t int strLen = strlen(encText);
\t if (n > 0)
\t {
\t \t for (i = 0; i < strLen; i++)
\t \t {
\t \t \t if (*(encText + i) == ' ') { }
\t \t \t else
\t \t \t {
\t \t \t \t if (*(encText + i) >= 'x')
\t \t \t \t {
\t \t \t \t \t *(encText + i) = (*(encText + i)) - 26;
\t \t \t \t }
\t \t \t \t *(encText + i) = (*(encText + i)) + n;
\t \t \t }
\t \t }
\t \t printf("The array after the program deciphered it : \n");
\t \t printf("%s", encText);
\t }
\t else if (n == 0)
\t {
\t \t for (i = 0; i < strLen; i++)
\t \t {
\t \t \t for (j = 0; j >= 0; j--)
\t \t \t {
\t \t \t \t temp = *(encText + i);
\t \t \t \t *(encText + i) = *(encText + j);
\t \t \t \t *(encText + i) = temp;
\t \t \t }
\t \t }
\t \t printf("The array after the program cracked it : \n");
\t \t printf("%s", encText);
\t }
}
"Ich weiß nicht, was das Problem mit dem Code" - na ja, wir wissen es auch nicht. Warum brauchen Sie nicht ein paar Minuten, um genau zu erklären, was das Problem ist? (d. h. mit welcher Eingabe haben Sie es getestet, welche inkorrekte Ausgabe haben Sie erhalten? Was waren Ihre Beobachtungen, als Sie Ihren Code Schritt für Schritt getestet haben?). –
'für (j = 0; j> = 0; j -)' wird nichts tun. –
Hey Barak, sorry ... Das Problem ist, dass im Falle der Caesar-Chiffre nichts passiert, es druckt nicht das Ergebnis davon. Im Fall des umgekehrten Texts wird derselbe String ausgegeben, den der Benutzer eingegeben hat. @barakmanos –