Как поместить группу изменений в массив, а затем распечатать все как одно в C - PullRequest
0 голосов
/ 10 июля 2020

Я сейчас решаю проблему с кодированием. Я должен зашифровать код и заменить слова другими закодированными словами. Я знаю, что могу проверить и распечатать каждый символ. Тем не менее, я хочу попытаться сохранить результат проверки каждого символа в массив, а потом я хочу просто распечатать его.

Ниже приведен полный код ... Я глубоко признателен, если кто-нибудь может помочь мне ответить на мой вопрос, или если это вообще возможно.

//one command line argument with the type int

int main(int argc, string argv[])
{
    //setting condition that: K = +; if more or less than one, immediate error message, return 1
    //if not decimal return = usage ./caesar. key, return value 1 to main
    if (argc != 2)
    {
        printf("Error 404 : \n");
        return 1;
    }
    //main program
    else if ( argc == 2 && isdigit(*argv[1]))
    {
        int k = atoi(argv[1]);                                                     
        string pltext = get_string("plaintext: ");                                  //getting input for the plain text
        char cptext[]

        for (int i = 0, n = strlen(pltext) ; i < n; i++)                            //turning pltext to integer
        {
            if (pltext[i] >= 'a' && pltext[i] <= 'z')
            {
                cptext[i] = ((pltext[i] - 'a' + k)%26)+'a';                           //shifting the integer with k (lowercase)
            }
            else if (pltext[i] >= 'A' && pltext[i] <= 'Z')
            {
                cptext[i] = ((pltext[i] - 'A' + k)%26)+'A';                           //shifting the integer with k (uppercase)
            }
            else
            {
                cptext[i] = pltext[i];                                                //other symbol stays
            }
        }
    //print out result
    string cptext = ("test");
    printf("ciphertext: %s\n", cptext[]);
    }
    else
    {
        printf("Usage: ./caesar key\n");
        return 1;
    }
}

1 Ответ

0 голосов
/ 10 июля 2020

Вы должны выделить массив в соответствии с количеством элементов для хранения.

char cptext[]

должно быть

char cptext[strlen(pltext) + 1]; // +1 for terminating null-character

(массив переменной длины, введенный в C99)

и

string cptext = ("test");
printf("ciphertext: %s\n", cptext[]);

должно быть

cptext[strlen(pltext)] = '\0'; // terminate the string
printf("ciphertext: %s\n", cptext); // remove extra []
...