В настоящее время я пытаюсь написать просто простую программу для генерации строки случайных символов для представления имени. Вызов его один раз дает то, что я хочу, однако, если я снова вызову функцию, чтобы сделать фамилию, я получаю тот же результат, что и имя, длина и все. В настоящее время я семя rand наверху(), поэтому я не уверен, что не так/что я могу сделать. Любая помощь будет оценена, спасибо за ваше время.rand() производит те же результаты даже после srand()
Мой код выглядит следующим образом:
int main(void)
{
srand(time(NULL));
int randomNum = 0;
char firstName[12] = { 0 };
char lastName[36] = { 0 };
char fullName[50] = { 0 };
/*for (int j = 0; j < 20; j++)
{
*/ randomNum = rand() % 10 + 2;
strcpy(firstName, generateName(randomNum));
printf("First: %s\n", firstName);
randomNum = rand() % 34 + 2;
strcpy(lastName, generateName(randomNum));
printf("Last: %s\n\n", firstName);
//strcat(fullName, firstName);
//strcat(fullName, " ");
//strcat(fullName, lastName);
//}
//getchar();
return 0;
}
А функция generateName выглядит следующим образом:
char* generateName(int length)
{
char* randomName = NULL;
randomName = (char*)malloc(sizeof(char) * (length + 1));
if (randomName)
{
randomName[0] = rand() % 26 + 65;
for (int i = 1; i < length; i++)
{
randomName[i] = rand() % 26 + 97;
}
randomName[length] = '\0';
}
return randomName;
}
Опять же, спасибо за ваше время.
Платформа, компилятор, библиотека времени выполнения? Несвязанный, но вы пропускаете память, не освобождая результат 'generateName'. –
Извините, поскольку я относительно новый программист, я использую Visual Studio 2013 в Windows 10, надеюсь, что ответ на ваш вопрос. –
Я полный дурак, я полностью не видел, что я печатал во второй раз. –