Я только начал изучать информатику.
Я учусь в CS50, преподавая в Гарварде онлайн. Что ж, я работаю над этой одной проблемой, когда мне нужно получить ключ от пользователя в командной строке, затем открыть текст, а затем сдвинуть этот текст для количества ключей в ASCII, чтобы создать зашифрованный текст.
вот то, что у меня есть до сих пор.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("Usage: ./caesar key\n");
}
{
string plaintext = get_string("plaintext: ");
int key = atoi(argv[1]);
int n = strlen(plaintext);
char chr[n];
printf("ciphertext: ");
for (int i = 0; i < n; i++)
{
chr[i] = plaintext[i];
if (isalpha(chr[i]))
{
if (isupper(chr[i]))
{
chr[i] = (chr[i] - 65 + key) % 26 + 65;
printf("%c",chr[i]);
}
else if (islower(chr[i]))
{
chr[i] = (chr[i] - 97 + key) % 26 + 97;
printf("%c",chr[i]);
}
}
else
{
printf("%c",chr[i]);
}
}
printf("\n");
}
}
ну, я знаю, что это кажется очень гибким, но, блин, моя вторая неделя в программировании, когда я работаю полный рабочий день.
В любом случае, я ' я пытаюсь заставить пользователя запустить эту программу, используя ./caesar «любое число для ключа».
, если пользователь вводит какие-либо другие вещи, то я хотел бы напечатать «Использование: ./ ключ цезаря \ n "
До сих пор я мог думать только о том, чтобы сделать оператор if с аргументом arg c! = 2, чтобы я мог по крайней мере убедиться, что пользователь вводит только одну команду сверху имени программы.
, но проблема в том, что если пользователь вводит другие вещи, такие как ./caesar HELLO ./caesar YolO
, программа все равно запускается.
Я пытаюсь понять, что я могу сделать, чтобы этого не произошло. * 10 20 *
Очень ценю ваше время, чтобы прочитать это и помочь.