Я столкнулся с проблемой при запуске приведенного ниже кода, предназначенного для vigenere cipher.even после тщательного изучения, я не могу отладить проблему. он показывает ошибку: kill by server.please help.Vigenere Cipher
/**
*
* vigenere.c
*
* Abhishek kumar
* encrypts entered string using vigenere cipher
* */
#include <stdio.h>
#include <stdlib.h>
#include <cs50.h>
#include <ctype.h>
#include <string.h>
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("Usage: /home/cs50/pset2/vigenere <keyword>");
return 1;
}
if (argc == 2)
{ string key = argv[1];
for(int k = 0,l = strlen(key);k < l; k++)
{
if(!isalpha(key[k]))
{
printf("Keyword must only contain letters A-Z and a-z");
exit(1);
}
}
string txt = GetString();
int i = 0,j = 0,c = 0;
int n = strlen(txt);
int m = strlen(key);
while(i < n)
{
if (isupper(txt[i]))
{
if(isupper(key[j]))
{
c = ((((int) txt[i] - 65 + (int) key[j] -65)%26) + 65);
printf("%c", (char) c);
i++;
j++;
}
if(islower(key[j]))
{
c = ((((int) txt[i] - 65 + (int) key[j] -97)%26) + 65);
printf("%c", (char) c);
i++;
j++;
}
}
else if (islower(txt[i]))
{
if(isupper(key[j]))
{
c = ((((int) txt[i] - 97 + (int) key[j] -65)%26) + 97);
printf("%c", (char) c);
i++;
}
if(islower(key[j]))
{
c = ((((int) txt[i] - 97 + (int) key[j] -97)%26) + 97);
printf("%c", (char) c);
j++;
}
}
else
{
printf("%c",txt[i]);
i++;
}
if (j == m-1)
{
j = 0;
}
}
}
}
Ниже приведены некоторые из тестовых примеров, в которых он неисправен.
:) vigenere.c exists
:) vigenere.c compiles
:(encrypts "a" as "a" using "a" as keyword
\ killed by server
:(encrypts "world, say hello!" as "xoqmd, rby gflkp!" using "baz" as keyword
\ killed by server
:(encrypts "BaRFoo" as "CaQGon" using "BaZ" as keyword
\ expected output, but not "CGSFpp"
:(encrypts "BARFOO" as "CAQGON" using "BAZ" as keyword
\ expected output, but not "CASFPO"
:) handles lack of argv[1]
:) handles argc > 2
:) rejects "Hax0r2" as keyword
Пожалуйста, добавьте образец ввода и желаемый результат. – merlin2011
, пожалуйста, задайте вопрос – dustinroepsch
отредактированный, проверка сейчас .. –