#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, string argv[])
{
string k = argv[1];
if (argc == 2 && isalpha(k))
{
printf("plaintext: ");
string p = get_string();
printf("ciphertext: ");
for(int i=0, j = 0, n = strlen(p); i< n; i++, j++)
{
if (isupper(p[i]) && isupper(k[j % strlen(k)]))
{
printf("%c", (p[i] + (k[j % strlen(k)] - 65)));
}
if (islower(p[i]) && isupper(k[j % strlen(k)]))
{
printf("%c", (p[i] + (k[j % strlen(k)] - 65)));
}
if (isupper(p[i]) && islower(k[j % strlen(k)]))
{
printf("%c", (p[i] + (k[j % strlen(k)] - 97)));
}
if (islower(p[i]) && islower(k[j % strlen(k)]))
{
printf("%c", (p[i] + (k[j % strlen(k)] - 97)));
}
if (isspace(p[i]))
{
printf(" ");
}
if (ispunct(p[i]))
{
printf("%c", p[i]);
}
}
printf("\n");
}
else
{
printf("Invalid Key\n");
return 1;
}
}
Это мой код для виртуального шифра из pset2 курса CS50.
Я получаю ошибку сегментации во время выполнения.Но это исчезнет, если я опущу && isalpha(p[i])
в строке 10, программа запускается без проблем.Что вызывает эту ошибку?