Снова проблемы с charom :(
Есть вот такой простой код:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctime>
#include <locale.h>
struct Student
{
int amount_of_debts;
char name[50];
char surname[50];
char faculty[10];
char group[10];
char patronymic[50];
};
char* get_random_name()
{
char NAMES[10][50] = { "Тимофей", "Марк", "Артём", "Леонид", "Илья",
"Олег", "Матвей", "Глеб", "Кирилл", "Владимир"};
return NAMES[rand()%10];
}
char* get_random_surname()
{
char SURNAMES[10][50] = { "Горюнов", "Гуляев", "Дементьев", "Звягинцев", "Исаков",
"Кожевников", "Никитин", "Орлов", "Островский", "Ульянов" };
return SURNAMES[rand() % 10];
}
int main()
{
srand((unsigned int)time(NULL));
setlocale(LC_ALL, "rus");
char buf[50];
strcpy_s(buf, get_random_name());
printf_s("%s", buf);
system("pause");
return 0;
}
Почему-то вывод в консоль то работает, то нет. Я ожидаю увидеть случайное имя из массива NAMES,иногда выводит правильно, иногда выводит какой-то случайный набор символов, иногда просто крашится и пишет что-то типа Buffer is too small, эта ошибка возникает в 81 строчке кода вот в этом файле corecrt_internal_string_templates.h Подскажите пожалуйста, как это можно пофиксить? Заранее спасибо.
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Возврат указателя на локальный массив.
Попробуйте
static char NAMES[10][50] = { "Тимофей", "Марк", "Артём", "Леонид", "Илья",
и
static char SURNAMES[10][50] = { "Горюнов", "Гуляев", "Дементьев", "Звягинцев", "Исаков",