I've been working on the vigenere.c problem from pset2 and am struggling to find the error in my code currently because whenever I try to run it my code crashes. Clearly there is something wrong but I don't exactly know where to start. Thanks for help.
int main(int argc, string argv[])
{
if(argc == 2)//checks if key was given
{
if(isalpha(argv[1]))//checks if key is letters
{
int cypher_number, arglet, keylen;
char cypher_letter;
string secret_message, key;
keylen = strlen(argv[1]);//string length of key
key = argv[1];//key
secret_message = GetString();
int messlen = strlen(secret_message);
for(int letter = 0; letter < messlen; letter++)
{
if(islower(secret_message[letter]))
{
for(int i = 0; i <= keylen; i++)
{
if(isupper(key[i]))
{
arglet = key[i] - 65;//subtracts A
cypher_number = ((secret_message[letter] + arglet) - 65) % 26;
cypher_letter = cypher_number + 65;
printf("%c", cypher_letter);
i = i % keylen;
}
if(islower(key[i]))
{
arglet = key[i] - 97;//subtracts a
cypher_number = ((secret_message[letter] + arglet) - 97) % 26;
cypher_letter = cypher_number + 97;
printf("%c", cypher_letter);
i = i % keylen;
}
}
}
if(isupper(secret_message[letter]))
{
for(int i = 0; i <= keylen; i++)
{
if(isupper(key[i]))
{
arglet = key[i] - 65;//subtracts A
cypher_number = ((secret_message[letter] + arglet) - 65) % 26;
cypher_letter = cypher_number + 65;
printf("%c", cypher_letter);
i = i % keylen;
}
if(islower(key[i]))
{
arglet = key[i] - 97;//subtracts a
cypher_number = ((secret_message[letter] + arglet) - 97) % 26;
cypher_letter = cypher_number + 97;
printf("%c", cypher_letter);
i = i % keylen;
}
}
}
else
{
printf("%c", secret_message[letter]);
}
printf("\n");
}
}
else
{
printf("NO!\n");
return 1;
}
}
else
{
printf("NO.\n");
return 1;
}
}