помогите разобраться в коде ниже

#include <stdio.h>
#include <string.h>

typedef int bool;    //вводим логический тип данных бул

struct Player {
    int id;
    char word[5 + 1];
    bool is_lost;
};
//Инициализация игроков, создание загаданного слова для каждого из игроков
void init_player(struct Player *player, int id);

//Вывод разделителя на экран
void print_separator();

//Сравнения вводимого слова с загаданным
void try_guess(struct Player *player);

//Функция останавливающая игру, в случае если слово было угадано
bool check_lost(struct Player *player);

//Вывод Проигравшего игрока
void print_loser(struct Player players[2]);

//Подсчет кол-ва символов входящих в слово, и совпадающих в неверном слове
void number_occurrences(char temporary_word[5], char word[5]); 

int main() {
    bool end_game = 0;
    struct Player players[2];
    for(int i=0; i<2; i++) {
        init_player(&players[i], i);
    }

    while (!end_game) {
        for(int i=0; i<2; i++) {
            try_guess(&players[i]);
            if (check_lost(&players[i])) {
                end_game = 1;
                break;
            }
        }
    }
    print_loser(players);
    return 0;
}

void init_player(struct Player *player, int id) {
    char word[10000];
    player -> id = id;
    player -> is_lost = 0;
    print_separator();
    printf("Игрок номер %d, загадайте слово из 5 символов: ", id + 1);
    while (1) {
        scanf("%s", word);
        if (strlen(word) == 5) {
            printf("Слово ***** игрока номер %d успешно введено!", id + 1);
            print_separator();
            strncpy(player->word, word, 5 + 1);
            break;
        } else {
            printf("Слово должно состоять из %d символов. Попробуйте еще раз: ", 5);
        }
    }
}

void try_guess(struct Player *player) {
    print_separator();
    char temporary_word[10000];
    while (1) {
        printf("Попытайтесь угадать слово игрока с номером %d: ", player->id + 1);
        scanf("%s", temporary_word);
        if (strlen(temporary_word) == 5) {
            if (strcmp(temporary_word, player->word) == 0) {
                player->is_lost = 1;
            } else {
                number_occurrences(temporary_word, player->word);
            }
            print_separator();
            break;
        } else {
            printf("Слово должно состоять из %d символов. Попробуйте еще раз: ", 5);
        }
    }
}

bool check_lost(struct Player *player) {
    if (player->is_lost) {
        return 1;
    }
    return 0;
}

void print_separator() {
    printf("\n===============\n");
}

void print_loser(struct Player players[2]) {
    print_separator();
    for(int i=0; i < 2; i++) {
        if (players[i].is_lost) {
            printf("Игрок #%d проиграл :(\n", players[i].id + 1);
            break;
        }
    }
    print_separator();
}

void number_occurrences(char temporary_word[5], char word[5]) {
    for(int i=0; i<strlen(temporary_word); i++) {
        int count = 0;
        for(int j = 0; j<strlen(word); j++) {
            if (temporary_word[i] == word[j]) {
                count++;
            }
        }
        printf("Символ %c входит %d раз в загаданное слово\n", temporary_word[i], count);
    }
}

Ответы (0 шт):