• XSS.stack #1 – первый литературный журнал от юзеров форума

ASCII код символа в char

W0rm

HDD-drive
Пользователь
Регистрация
19.02.2008
Сообщения
20
Реакции
0
облазил пол инета. ничего несмог найти.
надо просто генерить текст в проге, точнее набор букв(маленькие и большие)
мне на ум прихит тока руками забить массив и оттуда дергать символы. у кого какие мысли есть или сорец
 
я сделал как только мне монах сказал как переводить, просто в делфе помню была такая функция, а в С я ниразу ей не пользовался.
вот какая херня вышла
Код:
char a[200];
_memset(a,0,200);
int i = 1;
while(i<150)// длинна текста конечная регулируется тут
{
Sleep(GetTickCount()%10);
int k = GetTickCount()%57+65;
if (k<=96 && k>=91) k = 32;
wsprintf(a,"%s%c",a,char(k)); i++;
}
MessageBox(0,a,0,0);
на самый лучший код не притендует, но свое дело делает - генерит набор букв больших и маленьких, вct спец символы ASCII таблицы с 91 по 96 превраящаются в пробел(" ").
 
Ужос...

Код:
#undef UNICODE
#include <windows.h>
char a[200] = {0};
WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
	srand(GetTickCount());
	for(unsigned char i = 0; i < 200; i++) {  
  if (0 + rand() % 2)
  	a[i] = (char)65 + rand() % 26;
  else
  	a[i] = (char)97 + rand() % 26;
	}
	MessageBox(NULL, a, "Test Application", MB_OK);
	return 0;
}
 
фу капец. надо чаще гулять, а то мозги высохнут)))) :huh1:
спасибо за идею. массив можно ж много раз использовать и не искать чето каждый раз. взял простой гсч, работа хорошая, вместо тормозов GetTickCount
Код:
static int randx = 1; 
int _rand() 
{ 
randx = (randx * 25173 + 13849) % 65536; 
return(randx); 
}
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR szCmdLine,int nCmdShow)
{
	char a[1500],b[200];
	_memset(a,0,1500);_memset(b,0,200);
	int i = 0;
	while(i<57)
	{	
  
  if (i<=31 && i>=26) {b[i]=char(32);}
  else{b[i]=char(i+65);}
  i++;
	}
	i = 0;
	while(i<1200)
	{	
  a[i]=b[_rand()%57]; i++;
	}
	MessageBox(0,a,0,0);
	return 0;
}
 
что нетак? насколько я помню GetTickCount выдает количество милисекунд с запуска винды. так чтоб число было ранодомное надо задержки, а то будет одно и тоже значение подряд идти. уже проверял
 
Сначала используй функцию :
VOID Sleep(
DWORD dwMilliseconds // sleep time in milliseconds
);
А потом запускай GetTickCount.
 
Просто ужос... Как сказал бы Грейт: "ОМГ"!

Все эти ваши GetTickCount и детсадовский Sleep - это не есть генератор псевдослучайных чисел, и даже не линейно конгруентный. Никакой thread safe генерации, посрать что во всех потоках будут одни и те же значения последовательности и т.д.? Не нравится CRT - нужно писать свой генератор, благо материала по теме сейчас полно, поищите в инете готовые интерфейсы, написанные на асме, или пожалуйте сюда: http://algolist.manual.ru/.
 
У Зубкова в книге описаны пару алгоритмов генератора случайных чисел.
На сколько я понмю он там читает данные по адрессу 0040:006C(текушее число тактов таймера).
 
Сначала используй функцию :
VOID Sleep(
DWORD dwMilliseconds // sleep time in milliseconds
);
А потом запускай GetTickCount.
я ж не совсем тупой.
а вот теперь ты прикинь скока оно будет генерить эту строку в 1200 символов, если надо еще задержки делать. считай более 1.2 секунды, смотря какой Слип. а если надо вызвать её 100 раз? вот и офигиваешь от скорости
 
Гениальный бред.

Гугл mt_rand() - реализация генератора псевдослучайных чисел, GPL лицензия, настолько хорош, что применим в криптоалгоритмах - сам юзаю постоянно)))
 
Namelles One, насколько я понимаю ты про PHP говоришь? :) Чувак же на сях пишет... :)

ADD:
Хотя нет, конечно же его реализация есть во многих языках. Тут другая трабла. Он же определён в stdlib насколько я понимаю, т.е. один хрен он рантайм за собой потянет, что аффтара и не устраивает.
 
groundhog
Походу таки неверно...

Да, в реализации на Сях этой функции есть #include <stdlib.h>, тем не менее -вроде бы линкуется и без RTL, правда - не помню, честно скажу.

Проверьте.

Приложил сорц.
 

Вложения

  • mt_rand.zip
    3.4 КБ · Просмотры: 159


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх