Я новичок в программировании (начал правильно около 4 недель назад), и сейчас прохожу онлайн-курс CS50. Кажется, я столкнулся с небольшим препятствием в наборе задач на второй неделе - «Цезарь», где мой оператор if вообще не выполняется.
Прямо сейчас программа должна запускаться, когда число введен в командную строку, т.е. './caesar 10' (который, в конечном итоге, будет использоваться моим «ключом», но еще не успел его реализовать). Он должен запрашивать шифрование открытого текста и на данный момент просто +1 к каждому символу в открытом тексте.
Программа просто не выполняет оператор if, даже если все логические выражения кажутся истинными. Я запустил его через функцию debug50 в cs50 IDE, и все кажется правильным, то есть значение arg c равно 2, k будет иметь значение '10', когда я введу '10' в команду line.
Я уже два дня пытаюсь понять это, но безуспешно! Любой совет будет очень признателен. Я изо всех сил старался объяснить проблему как можно лучше, но все это для меня очень ново, как я уже говорил ранее.
Заранее спасибо за любую / всю помощь! :)
#include <stdio.h>
#include <cs50.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, string argv[])
{
int k = atoi(argv[1]);
if (argc == 2 && isdigit(k))
{
string s = get_string("Plaintext: ");
for(int i = 0, n = strlen(s); i < n; i++)
{
printf("Cipertext: %c", s[i] + 1);
if (s[i] == ' ')
{
return 0;
}
}
}
else
{
printf("Usage: ./caesar key\n");
}
}