Проверить работоспособность кода C++

я новичок в C++, при компиляции постоянно вылезают какие-то ошибки , не связанные с синтаксисом, как я понял, можете пожалуйста скомпилировать и посмотреть, может я что-то не так делаю...

  #include <locale>
    #include <cstdlib>
    #include <cstring>
    #include <Windows.h>
    using namespace std;
    struct book
    {
    char title[50];
    char authors[50];
    char publisher[25];
    int year;
    unsigned int pages;
    };
    const int N = 2;
    book collection[N]; // создаем массив из N структур book
    int _tmain(int argc, _TCHAR* argv[])
    {
     setlocale(LC_ALL, "rus");
    for (int i = 0; i < N; i++)
     {
     printf("\n\nВведите данные для книги №%d\n", i + 1);
     printf(" Название - ");
     SetConsoleCP(1251);
     gets_s(collection[i].title, 49);
     SetConsoleCP(866);
     printf(" Автор(ы) - ");
     SetConsoleCP(1251);
     gets_s(collection[i].authors, 49);
     SetConsoleCP(866);
     printf(" Издательство - ");
     SetConsoleCP(1251); 
    
     gets_s(collection[i].publisher, 49);
     SetConsoleCP(866);
     printf(" Год выпуска - ");
     scanf_s("%d", &collection[i].year);
     getchar();
     printf(" Число страниц - ");
     scanf_s("%u", &collection[i].pages);
     getchar();
     }
    char find_title[50];
     printf("\n\n Введите название искомой книги - ");
     SetConsoleCP(1251);
     gets_s(find_title, 49);
     SetConsoleCP(866);
    bool found = false;
    for (int i = 0; i < N; i++)
     {
     if (strcmp(collection[i].title, find_title) == 0)
     {
     found = true;
     printf("\n======== НАЙДЕНА КНИГА ==========\n");
     printf(" Название: ");
     puts(collection[i].title);
     printf(" Автор(ы): ");
     puts(collection[i].authors);
     printf(" Издательство: ");
     puts(collection[i].publisher);
     printf(" Год выпуска: %d\n", collection[i].year);
     printf(" Страниц: %u\n", collection[i].pages);
     }
     }
    if (!found)
     printf(" Книга с таким названием не найдена в коллекции!\n");
     system("pause");
    return 0;
}

Ошибки:

main.cpp:16:26: error: '_TCHAR' has not been declared
     int _tmain(int argc, _TCHAR* argv[])
                          ^~~~~~
main.cpp: In function 'int _tmain(int, int**)':
main.cpp:36:6: error: 'scanf_s' was not declared in this scope
      scanf_s("%d", &collection[i].year);
      ^~~~~~~
main.cpp:36:6: note: suggested alternative: 'sscanf_s'
      scanf_s("%d", &collection[i].year);
      ^~~~~~~
      sscanf_s

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

Автор решения: HolyBlackCat

Вы все делаете правильно, проблема в коде.

  1. int _tmain(int argc, _TCHAR* argv[]) -> int main(int argc, char *argv[])

  2. Судя по вот этому вопросу, функции с суффиксом _s нормально поддерживаются только в Visual Studio. Замените на похожие функции без _s (но работают они немного по-другому, поэтому придется думать головой и читать мануал).

→ Ссылка