I am getting issues in output for the text where we have a space or any other character except alphabets.Key characters are not going with correct s[i]
,
for example:
if i have a text meet me at the park
and key word Bacon
then the character after space in the text gets with b
rather than n
.I am not able to fix it,
Plz help
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
int main (int argc,string argv[])
{
if ( argc!=2)
{
printf("./vigenere string\n");
return 1;
}
int n=strlen(argv[1]);
string s=GetString();
for (int i=0,l=strlen(s);i<l;i++)
{
if(isalpha(s[i])&& isalpha(argv[1][i%n]))
{
if (isupper(argv[1][i%n]) && isupper(s[i]))
{
char d=argv[1][i%n];
int t=(int)d;
t=t-65;
int u=(int)s[i];
u=u-65;
int v=(t+u)%26+65;
printf("%c",(char)v);
}
if (islower(argv[1][i%n]) && islower(s[i]))
{
char d=argv[1][i%n];
int t=(int)d;
t=t-97;
int u=(int)s[i];
u=u-97;
int v=(t+u)%26+97;
printf("%c",(char)v);
}
if( isupper(argv[1][i%n]) &&islower(s[i]))
{
char d=argv[1][i%n];
int t=(int)d;
t=t-65;
int u=(int)s[i];
u=u-97;
int v=(t+u)%26+97;
printf("%c",(char)v);
}
if( islower(argv[1][i%n]) &&isupper(s[i]))
{
char d=argv[1][i%n];
int t=(int)d;
t=t-97;
int u=(int)s[i];
u=u-65;
int v=(t+u)%26+65;
printf("%c",(char)v);
}
}
else
{
printf("%c",s[i]);
}
}
}