Mein Code für CS50 pset2 Vigenere Chiffre ist wie folgt. Bitte hilf mir den Fehler zu finden. Dieser Code tut grundsätzlich nichts, wenn der Schlüssel den Buchstaben "a" enthält. Es heißt "Gleitkommaausnahme". Ich weiß nicht, was das bedeutet. Bitte gehen Sie durch den Code und sagen Sie mir, was der Fehler ist.Was ist los mit meinem Vigenere Cypher CS50
#include<stdio.h>
#include<cs50.h>
#include<ctype.h>
#include<string.h>
int main(int argc, string argv[])
{
//check if there are only two command line arguments//
if (argc!=2)
{
printf("Please enter a valid input!\n");
return 1;
};
string key = argv[1];
for(int i=0, n=strlen(key); i < n; i++)
{
//check if there is any number in the key//
if(!isalpha(key[i]))
{
printf("Invalid Key!\n");
return 1;
};
//converting the key into ints.//
if(islower(key[i]))
{
key[i] = key[i] - 'a';
}
else if(isupper(key[i]))
{
key[i] = key[i] - 'A';
};
};
//prompt user for the string//
string s = GetString();
int c;
int k;
int stln = strlen(s);
int kyln = strlen(key);
for(int j = 0, m = strlen(s); j < m; j++)
{
if(islower(s[j]))
{
s[j] = s[j] - 'a';
//for wrapping around the key//
if(stln > kyln)
{
k = j % strlen(key);
c = (s[j] + key[k]) % 26;
s[j] = 'a' + c;
}
else
{
c = (s[j] + key[j]) % 26;
s[j] = 'a' + c;
};
}
else if (isupper(s[j]))
{
s[j] = s[j] - 'A';
//for wrapping around the key//
k = j % strlen(key);
if(stln > kyln)
{
c = (s[j] + key[k]) % 26;
s[j] = 'A' + c;
}
else
{
c = (s[j] + key[j]) % 26;
s[j] = 'A' + c;
};
};
};
printf("%s\n", s);
};
Zeige Definition von 'string'. – chux
Off-Thema: Sie benötigen keine Semikola nach dem Schließen von geschweiften Klammern. Mit anderen Worten '};' sollte '}' – user3386109
chux sein, definiert die cs50-Bibliothek string. Es ist nur typedef von char * http://mirror.cs50.net/library50/c/cs50-library-c-3.0/cs50.h – MacedonZero