Я новичок здесь и работаю над вторым домашним заданием Цезарь cs50, кажется, что большая часть моего обзора верна, за исключением последнего - я не могу справиться с ситуацией отсутствия argv [1], что означает, что я только печатаю. / Цезарь, он вернет ошибку сегментации. Мне интересно, почему этот код if (argc != 2)
не может вернуть 0, когда arg c == 1, однако он работает, когда arg c> 1, я нахожу это странным. Может кто-нибудь мне помочь?? Заранее спасибо!
# include <stdio.h>
# include <cs50.h>
# include <string.h>
# include <ctype.h>
# include <math.h>
# include <stdlib.h>
int check_the_key(int argc, string y);
int main(int argc, string argv[])
{
string x = argv[1];
int y = argc;
int k = check_the_key(y, x);
if (k == 0)
{
printf("ERROR!!!!!\n");
return 1;
}
else
{
// printf("The key is %i\n", k);
string text = get_string("Input your text:");
int i;
int n;
printf("ciphertext: ");
for (i = 0, n = strlen(text); i < n; i++)
{
if (islower(text[i]))
{
printf("%c", (text[i] - 97 + k) % 26 + 97 );
}
else if (isupper(text[i]))
{
printf("%c", (text[i] - 65 + k) % 26 + 65);
}
else
{
printf("%c", text[i]);
}
}
printf("\n");
return 0;
}
}
int check_the_key(int argc, string y)
{
int number = argc;
string key = y;
int numberkey = atoi(key);
if (argc != 2)
{
return 0;
}
else
{
if (numberkey > 0)
{
return numberkey;
}
else
{
return 0;
}
}
}