Я кодировал Vigenere Cipher как часть CS50. Это мой код.Vigenere Cipher Дополнительные символы
#include<cs50.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
int main(int argc, string argv[])
{
if(argc != 2)
{
printf("Bad Argument!\n");
return 1;
}
for(int k = 0; k <= strlen(argv[1]) - 1; k++)
{
if (isalpha(argv[1][k]) == 0)
{
printf("Bad Argument!\n");
return 1;
}
}
string s = GetString();
char a[strlen(s)];
int i, j = 0;
int l = strlen(argv[1]);
for (i = 0; i < strlen(s); i++)
{
int k = (int)(tolower(argv[1][j%l]) - 'a');
if (s[i] >= 'A' && s[i] <= 'Z')
{
a[i] = (s[i] - 'A' + k) % 26 + 'A';
j++;
}
else if (s[i] >= 'a' && s[i] <= 'z')
{
a[i] = s[i] - 'a' + k) % 26 + 'a';
j++;
}
else
a[i] = s[i];
}
printf("%s\n", a);
}
Это мой код для pset2 vigenere.c. Однако, как только я скомпилирую его и запустил, я получаю разные символы в конце зашифрованного текста, например:
Итак, Check50 в некоторых случаях принимает ответ, а в других - нет.
:(encrypts "a" as "a" using "a" as keyword
\ expected output, but not "a\u001c������\n"
:(encrypts "world, say hello!" as "xoqmd, rby gflkp!" using "baz" as keyword
\ expected output, but not "xoqmd, rby gflkp!v��\t��\n"
:) encrypts "BaRFoo" as "CaQGon" using "BaZ" as keyword
:) encrypts "BARFOO" as "CAQGON" using "BAZ" as keyword
Что я делаю неправильно?
Я не думаю, что один профессор в одном классе является достаточной причиной для выхода из университета. – kamoroso94