After spending many hours on caesar, I have restarted from nothing several times and think my program is able to correctly validated the key given by the user. The problem is that my validation only works correctly on single digit keys. I have converted the string into individual digits and then a for loop checks whether they are digits or not using isdigit(). Here is the code:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(int argc, string argv[])
{
//check that a key was given
if (argc != 2)
{
printf("Usage: ./caesar key\n");
return 1;
}
//check that the key is a number
string s = argv[1];
for (int i = 0, n = strlen(s); i < n; i++)
{
int check = isdigit(s[i]);
if (check)
// do the stuff
{
printf("SUCCESS\n");
printf("%s\n", argv[1]);
}
// invalid key
else
{
printf("Usage: ./caesar key\n");
return 1;
}
}
}
When I run the program and give it an input like:
./caesar 4
Everything works great
With an input like:
./caesar 20x
I get the following output:
SUCCESS
20x
SUCCESS
20x
Usage: ./caesar key
I am hoping that this is a simple looping problem of some kind and that I don't have to start over again. Any help is much appreciated!