При запуске, как указано выше, программа показывает ошибку сегментации. Почему это так? Программа предназначена для шифрования vigenere. То, что я делаю, это хранить ключ в строке, а затем хранить целочисленное значение ключа, как мы делали в кезар-шифре, а затем внедрять шифр vigenere, но как-то он показывает ошибку сегментации, если я его компилирую, а затем используя ./a.out бекон. Я не могу понять, почему это происходит (что вызывает ошибку сегментации).Что вызывает возникновение ошибки сегментации?
#include<stdio.h>
#include<cs50.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
int main(int argc, string argv[])
{
if((argc==2)&&(isalpha(argv[1])))
{
string k;
k=argv[1];
string p = GetString();
int lenkey=strlen(k);
int lenp=strlen(p);
string c="hello";
char temp;
//change key to lowercase and store the shift value as in caesar
for(int i=0;i<lenkey;i++)
{
temp=tolower(k[i]);
k[i]=temp -'a';
}
int j=0;
for(int i=0;i<lenp;i++)
{
//i is for plaintext j is for key
if(isalpha(p[i]))
{
j++;
if(j==(lenkey-1)) j=0;//reset the key if end is reached
if(isupper(p[i]))
{
p[i] = p[i]-'A';
c[i] = (p[i]+k[j])%26;
c[i] = c[i]+'A';
}
if(islower(p[i]))
{
p[i] = p[i]-'a';
c[i] = (p[i]+k[j])%26;
c[i] = c[i]+'a';
}
}
else
c[i]=p[i];
}
printf("%s\n",c);
return 0;
}
else
{ printf("what?\n");
return 1;
}
}
'string'? Я предполагаю, что это в 'cs50.h', поскольку он не существует ни в одном из других (стандартных) заголовков. поэтому ваш код мог бы, буквально, делать что угодно! * – paxdiablo
'string' -' typedef char * string', который входит в заголовочный файл 'cs50' – 4rshdeep
Итак, что дает' GetString() 'дать вам? – paxdiablo