Ich erstelle ein Programm, das Text verschlüsselt mit dem vigenere Chiffre. Wenn jedoch immer ich den Code ausführen, gibt es mir Fehler zu sagenMulti-Zeichen-Konstantenfehler
vigenere.c:27:29: error: multi-character character constant [-Werror,-Wmultichar]
int letternum = 'currentletter';
^
vigenere.c:27:29: error: character constant too long for its type [-Werror]
vigenere.c:26:18: error: unused variable 'currentletter' [-Werror,-Wunused-variable]
char currentletter = input[i];
^
3 errors generated.
Ich versuche, den ASCII-Wert des i (th) Briefes von der Eingabe des Benutzers zu erhalten, indem die Kohle in einen int zu konvertieren. Mein Programmcode ist unten. Bitte helfen.
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
string input;
int digitnum = 0;
int main(int argc, string argv[])
{
if (argc>2 || argc<2)
{
printf("Please enter a valid argument.\n");
return 1;
}
input = GetString();
for (int i = 0; i < strlen(input); i++)
{
char c = input[i];
if (isalpha(input[i]))
{
char currentletter = input[i];
int letternum = 'currentletter';
if(isupper(c))
{
int upper = 'A';
int alphanum = letternum - upper;
int newint = (alphanum + alphanum) % 26;
newint = newint + upper;
char newchar = newint;
printf("%c", newchar);
}
if(islower(c))
{
int lower = 'a';
int alphanum = letternum - lower;
int newint = (alphanum + alphanum) % 26;
newint = newint + lower;
char newchar = newint;
printf("%c", newchar);
}
digitnum = digitnum + 1;
if (digitnum >= strlen(argv[1]))
{
digitnum = 0;
}
}
else
{
printf("%c", input[i]);
}
}
}
Müssen Sie wirklich diesen ganzen Code posten? Das ist eine rhetorische Frage. – juanchopanza
Ich bin mir wirklich nicht sicher, weil ich neu in der Programmierung bin und nicht 100% sicher bin, wo/was genau das Problem verursacht. –
Es ist grundlegende Problemlösung. Entfernen Sie alles, bis Sie nur noch problematischen Code übrig haben. – juanchopanza