Почему мой код дает мне только последний символ из строки? - PullRequest
1 голос
/ 26 апреля 2020

Я хочу написать программу, которая, учитывая строку, создает новую строку, состоящую из двух последних букв, обращенных и разделенных пробелом. В моем примере это слово "embedded".

. Оно должно возвращать строку ”d e”, но появляется только последний символ. Так в чем же проблема?

#include <stdio.h>

char *lastLetters(char *word);
char arr[4];

int main(void) {

    char str[10] = "Embedded";
    printf("%s", lastLetters(str));
    return 0;
}

// function declaration
char *lastLetters(char *word) { /*pointer which points to the first character in string (world)*/

    char *ptr = word;
    /* loop until the pointer ptr reaches the NULL terminator */
    while (*ptr != '\0')
    {
        ptr++;
    }
    /* get the last character in the string word */
    arr[0] = *(--ptr);
    arr[1] = ' ';
    /* get the second last character in the string word */
    arr[2] = *(++ptr);
    /* Add the null terminator */
    arr[3] = '\0'; //i will return array so i will receive it in pointer
    return arr;
}

1 Ответ

2 голосов
/ 26 апреля 2020

Ваша ошибка

arr[2] = *(++ptr);

должна быть уменьшена

arr[2] = *(--ptr);

при вводе arr[0]=d arr[1]=space okey, затем вы снова увеличиваете ptr, чтобы вернуться к предыдущий элемент. Таким образом, ваш вывод будет только d (последний символ).

По этим причинам вы должны уменьшить этот указатель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...