CS50 pset2 Vigenere Cypher의 내 코드는 다음과 같습니다. 나는 C 프로그래밍에 익숙하지 않다. 내 코드가 잘못 되었나요? (Vigenere cypher cs50, pset2)
는 [내가 몇 가지 제안하고이 코드를 난 후에 나는 (아래) 나의 새로운 편집 코드입니다. 한 번 코드를 편집]나는 무한 루프도 새로운 암호화 된 텍스트는 다음과 같이 발생되지 않습니다를 생성하는 코드를 실행하면 그것은 있어야합니다. 코드 수정에 관한 제안이나 조언을 구할 수 있습니까? 감사합니다.
#include <stdio.h>
#include <cs50.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, string argv[])
{
if (argc != 2) //if it is not rqual to 2, it gives an error message.
{
printf("Enter the valid input : \n");
return 1;
}
if (argc == 2) //if two commands are given then it proceeds to other step.
{
string k = argv[1];
string m = GetString();
int l = strlen(k);
int p = strlen(m);
for(int i = 0; i <= p ; i++) //it has to keep on rotating from 0 to len of string and back to zero and so on.
{
{
i = i % l;
}
if (isalpha(m[i]) && isalpha(k[i])) // it proceeds ahead only if the input given is an alphabet, if the input is sth other than alphabet it prints exactly as it is.
{
for(int t = 0; t <= p ; t++)
{
if(isupper(m[t])) // when is it capital letter.
{
printf("%c", (m[t] - 65 + k[i]) % 26 + 65);
}
if(islower(m[t])) // when it is small letter.
{
printf("%c" , (m[t] - 97 + k[i])% 26 + 97);
}
}
}
else //if it is not an alphabet it returns as it is.
{
printf("%c", m[i]);
}
}
}
printf("\n");
return 0;
}
컴파일러에서 말한 것처럼 'p'는 포인터, 배열 또는 벡터가 아닙니다. 그것은'int'입니다. –