문자열 키를 사용하여 일반 텍스트를 암호화하려고합니다. 어쨌든 일반 텍스트가 키보다 크면 키는 계속 키를 사용한다고 가정합니다. 키를 다시 시작하기 위해 모듈을 사용했지만 어떤 이유로 그것이 코드에 문제가 있습니까? 그런데 키 상태의 상한 또는 하한 상태는 요인이 아니므로이 값을 낮추는 이유입니다. 렌더링 된 도움을 주시면 감사하겠습니다. // 제안 된대로 정리 된 코드.모듈러스를 사용하여 텍스트 줄 바꾸기
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include<stdlib.h>
#include<ctype.h>
int main (int argc, string argv[])
{
if (argc != 2)
{
printf("Ouch missing key\n");
return 1;
}
//get encryption keyword from argv array
string k= (argv[1]);
//test for non aplha character in plain text message
int x;
for (x = 0; x <strlen(argv[1]); x++)
{
if(isalpha(k[x]) == false)
{
printf("Ouch ensure value is alphabetical only\n");
return 1;
}
}
string m;
m = GetString(); //get plain text from prompt
for (int i= 0, j = 0; i< strlen(m) && j<= strlen(k); i++, j++)
{
if (
isalpha(m[i]) && isupper(m[i]))
{
m[i]= (m[i]-'a' + (tolower(k[j % strlen(k)])-'a')) % 26 + 'A';
}
else if (
isalpha(m[i]) && islower(m[i])
)
{
m[i] = (m[i] - 'a' + (tolower(k[j %strlen(k)])- 'a')) % 26 + 'a';
}
else
m[i] = m[i];
}
printf("%s\n", m);
}
방법이'C' 또는'C++ '인가? C 언어의 경우'string '은 어떻게 정의되어 있습니까? C++의 경우 std :: string 또는 다른 것입니까? std :: string 인 경우 strlen (m)은 어떻게 컴파일합니까? 그리고'GetString'은 실제로 무엇을 반환합니까? –
나는 그것을 얻지 않았다. 정확히 무엇이 틀렸습니까? 메시지를 해독하십시오. (평문은 키가 계속해서 키를 사용한다고 가정하는 키보다 큽니다. ":" "그런데 키 상태의 위 또는 아래 상태가 중요하지 않습니다. 나는 왜 그것을 ""로 낮추기 위해 그것을 바꾼다. 또한 코드 정리 (거대한 공백 및 오해의 소지가있는 설명)가 있으면 좋을 것입니다. 그것을 읽기가 어렵다. – Drop