Этот код предназначен для шифрования текста на основе ключа ввода аргумента команды и распечатки зашифрованного текста. Однако он не печатает пробелы и знаки препинания. Может кто-нибудь объяснить, что не так?Программа не печатает пробелы и пропуски
Пример использования:
$ ./caesar 12
world, say hello!
iadxp, emk tqxxa!
$
Код:
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
int main(int argc, string argv[])
{
if (argc>2 || argc<2)
{
printf("Please enter a valid argument.\n");
return 1;
}
string input = GetString();
int key = atoi(argv[1]);
for(int i = 0, l = strlen(input); i < l; i++)
{
//if(isalpha(input[i]))
//{
char c = input[i];
int letternum = c;
if(isupper(c))
{
int upper = 'A';
int alphanum = letternum - upper;
int newint = (alphanum + key) % 26;
newint = newint + upper;
char newchar = newint;
printf("%c", newchar);
}
if(islower(c))
{
int lower = 'a';
int alphanum = letternum - lower;
int newint = (alphanum + key) % 26;
newint = newint + lower;
char newchar = newint;
printf("%c", newchar);
}
//}
}
printf("\n");
}
Где код и показать нам, как вы запускаете его и ожидаемый результат. – sjsam
Это строка 42 (это всегда так), столбец 23. Серьезно: вы говорите, что не так, что вы ожидаете, и покажите свой код. См. [Ask]. – Olaf
Рассмотрите возможность использования 'isalpha', чтобы определить, является ли символ буквой, подлежащей шифрованию, иначе выведите символ« как есть ». –