pset2 vigenere help (Ошибка сегментации) - PullRequest
0 голосов
/ 03 октября 2018
    #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, программа запускается без проблем.Что вызывает эту ошибку?

...