Проверить работоспособность кода 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
→ Ссылка
Вы все делаете правильно, проблема в коде.
int _tmain(int argc, _TCHAR* argv[])->int main(int argc, char *argv[])Судя по вот этому вопросу, функции с суффиксом
_sнормально поддерживаются только в Visual Studio. Замените на похожие функции без_s(но работают они немного по-другому, поэтому придется думать головой и читать мануал).