- 1
- 2
- 3
- 4
char *reg = data;
char *temp = "blahblah is ";
strcat(temp,(const char*)"reg[4]");
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+139
char *reg = data;
char *temp = "blahblah is ";
strcat(temp,(const char*)"reg[4]");
Как оказывается на Си можно конкатенировать строки
+142
/* gcc -static -Os -W -nostartfiles -fno-stack-protector -U_FORTIFY_SOURCE glibc_preinstall.c */
#include <unistd.h>
#include <signal.h>
#include <sys/utsname.h>
#ifndef MIN_KERNEL_VERSION
# error "MIN_KERNEL_VERSION not defined"
#endif
#define PRINT_MSG(msg) write(2, (msg), sizeof(msg) - 1)
#define FATAL(msg) do {PRINT_MSG(msg); kill_parent(); _exit(1);} while(0)
static void kill_parent(void)
{
pid_t pid = getppid();
if (pid < 100)
return;
PRINT_MSG("Sending SIGSTOP signal to parent process.\n");
(void) kill(pid, SIGSTOP);
}
static int is_digit(char c)
{
return c >= '0' && c <= '9';
}
static int
parse_release(const char *p)
{
unsigned int i, osversion = 0;
for (i = 0; i < 3 && *p; i++, ++p)
{
unsigned int d = 0;
for (; is_digit(*p); ++p)
d = d * 10 + (*p - '0');
if (d == 0 || d >= 255 || (i < 2 && *p && *p != '.'))
{
osversion = 0;
break;
}
osversion |= d << (16 - 8 * i);
}
return osversion;
}
static void
check_kernel_version(void)
{
struct utsname name;
if (uname(&name) < 0)
FATAL("kernel version check failed: uname syscall failed.\n");
if (parse_release(name.release) < parse_release(MIN_KERNEL_VERSION))
FATAL("kernel version check failed: KERNEL TOO OLD, "
"minimal version supported by glibc is " MIN_KERNEL_VERSION
".\n");
}
void
_start(void)
{
check_kernel_version();
_exit(0);
}
Скрипт на языке Си, проверяющий, что загружено ядро версии не меньшей чем MIN_KERNEL_VERSION (2.6.18 на момент написания). Очень красиво взрывается на ядре 3.0.
+106
if (fFisWaitAccept)
{
if (++countB > 2)
{
countB = 0;
TRACE("ERROR TIMER B\n");
Reinit_ATS_Connection();
fFisWaitAccept = false;
set_timer_b(tmB);
return;
}
}
else
countB = 0;
SendFrameToATS(buf, 4); //visilaem neskolko raz
SendFrameToATS(buf, 4); //FW dlia bolshej uverennosti
SendFrameToATS(buf, 4); //ibo esli etot paket nedojdiot sviazi pizdec
fFisWaitAccept = true;
set_timer_b(tmB);
Фрагмент кода управляющей программы для некоей АТС.
+147
{
//-----------------------------------------
// Declare and initialize variables
WSADATA wsaData;
int iResult = 0;
int iError = 0;
INT iNuminfo = 0;
int i;
// Allocate a 16K buffer to retrieve all the protocol providers
DWORD dwBufferLen = 16384;
LPWSAPROTOCOL_INFO lpProtocolInfo = NULL;
// variables needed for converting provider GUID to a string
int iRet = 0;
WCHAR GuidString[40] = { 0 };
// Initialize Winsock
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0) {
wprintf(L"WSAStartup failed: %d\n", iResult);
return 1;
}
lpProtocolInfo = (LPWSAPROTOCOL_INFO) MALLOC(dwBufferLen);
if (lpProtocolInfo == NULL) {
wprintf(L"Memory allocation for providers buffer failed\n");
WSACleanup();
return 1;
}
iNuminfo = WSAEnumProtocols(NULL, lpProtocolInfo, &dwBufferLen);
if (iNuminfo == SOCKET_ERROR) {
iError = WSAGetLastError();
if (iError != WSAENOBUFS) {
wprintf(L"WSAEnumProtocols failed with error: %d\n", iError);
if (lpProtocolInfo) {
FREE(lpProtocolInfo);
lpProtocolInfo = NULL;
}
WSACleanup();
return 1;
} else {
wprintf(L"WSAEnumProtocols failed with error: WSAENOBUFS (%d)\n",
iError);
wprintf(L" Increasing buffer size to %d\n\n", dwBufferLen);
if (lpProtocolInfo) {
FREE(lpProtocolInfo);
lpProtocolInfo = NULL;
}
lpProtocolInfo = (LPWSAPROTOCOL_INFO) MALLOC(dwBufferLen);
if (lpProtocolInfo == NULL) {
wprintf(L"Memory allocation increase for buffer failed\n");
WSACleanup();
return 1;
}
iNuminfo = WSAEnumProtocols(NULL, lpProtocolInfo, &dwBufferLen);
if (iNuminfo == SOCKET_ERROR) {
iError = WSAGetLastError();
wprintf(L"WSAEnumProtocols failed with error: %d\n", iError);
if (lpProtocolInfo) {
FREE(lpProtocolInfo);
lpProtocolInfo = NULL;
}
WSACleanup();
return 1;
}
}
}
wprintf(L"WSAEnumProtocols succeeded with protocol count = %d\n\n",
iNuminfo);
for (i = 0; i < iNuminfo; i++) {
wprintf(L"Winsock Catalog Provider Entry #%d\n", i);
--- skipped ---
wprintf(L"\n");
}
if (lpProtocolInfo) {
FREE(lpProtocolInfo);
lpProtocolInfo = NULL;
}
WSACleanup();
return 0;
}
http://msdn.microsoft.com/en-us/library/ms741574(v=VS.85).aspx
Я считаю это говнокодом, т.к. автор данного примера страдает сильнейшие паранойей. Всем переменным он присваивает нолики, например перед return строки 87, 52 и т.д. ... Даже iResult, lpProtocolInfo и т.д. в начале...
+136
inline int getMaximumIterations() // НЕ: MAX_ITERATIONS = 25
{
return 25;
}
правила использования глобальных переменных ))) прочитанные в доках одной софтовой компании
+109
int rnd() {
srand( rand()*rand() );
int r = 0;
for (int i=0;i<=10;i++)
r=rand();
srand( ++r - time(NULL) );
return rand()/r;
}
NEED MOAR RANDOM NUMBERS!!!
+142
/* Standard streams. */
extern struct _IO_FILE *stdin; /* Standard input stream. */
extern struct _IO_FILE *stdout; /* Standard output stream. */
extern struct _IO_FILE *stderr; /* Standard error output stream. */
/* C89/C99 say they're macros. Make them happy. */
#define stdin stdin
#define stdout stdout
#define stderr stderr
А смысл?
+147
// на сервере:
typedef struct SRV_time_tag
{
int secs;
int msecs;
} SRV_time_t;
// в клиенте (который издревле использует хидеры сервака):
typedef struct CLI_time_tag
{
int secs;
int msecs;
} CLI_time_t;
// ... в сервере, посылается клиенту:
gettimeofday( &tv, NULL );
now->secs = tv.tv_sec;
now->msecs = tv.tv_usec / 1000;
велосипеды разные нужны, велосипеды всякие важны. теперь с капипастой!
+148
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <string.h>
#include <io.h>
#include <fcntl.h>
struct student {
char FIO[40];
char Group[10];
int TaoN;
char Ball[3];
}qt,st,zt,*zap;
int flen(char * fname){
int handle, len;
handle = open(fname,O_RDWR);
len = filelength(handle);
close(handle);
return len;
}
void writte(FILE *f){
int ret;
printf("\t\t\tЗАПОЛНЕНИЕ БАЗЫ:\n\n");
printf("ФИО:\t\t");
scanf("%s", &st.FIO);
printf("ГРУППА:\t\t");
scanf("%s", &st.Group);
printf("НОМЕР ЗАЧЕТКИ:\t");
scanf("%d", &st.TaoN);
printf("БАЛЛ:\t\t");
scanf("%s", &st.Ball);
ret = atoi(st.Ball);
for(;;)
if((ret != 1) && (ret != 2) && (ret != 3) && (ret != 4) && (ret != 5)){
printf("Неверный символ. Введите число\n");
printf("БАЛЛ:\t\t");
scanf("%s", &st.Ball);
ret = atoi(st.Ball);
}
else break;
f = fopen("data.txt","a+");
fwrite(&st, sizeof(st), 1, f);
fclose(f);
};
void readd(student st,FILE *f){
int len,i,n;
system("cls");
printf("\t\t\tЧТЕНИЕ БАЗЫ:\n\n");
f = fopen("data.txt","r+");
len = flen("data.txt");
n = len/sizeof(st);
for(i = 0; i < n; i++)
{
fread(&st, sizeof(st), 1, f);
printf("ФИО:\t\t%s\n", st.FIO);
printf("ГРУППА:\t\t%s\n", st.Group);
printf("ЗАЧЕТКА:\t%d\n", st.TaoN);
printf("БАЛЛ:\t\t%d\n", st.Ball);
printf("\n");
}
}
void Searc(student zt,student st,FILE *f){
int len, n, i;
system("cls");
printf("\t\t\tПОИСК В БАЗЕ:\n\n");
printf("ФИО: ");
scanf("%s", &zt.FIO);
printf("\n");
if (strlen(zt.FIO) != 0){
f = fopen("data.txt","r+");
len = flen("data.txt");
n = len/sizeof(st);
for(i = 0; i < n; i++){
fread(&st, sizeof(st), 1, f);
int rt = strcmp(st.FIO, zt.FIO);
if (rt == 0)
{
printf("ФИО: ");
printf("\t\t%s\n", st.FIO);
printf("ГРУППА: ");
printf("\t%s\n", st.Group);
printf("ЗАЧЕТКА: ");
printf("\t%d\n", st.TaoN);
printf("БАЛЛ: ");
printf("\t\t%d\n", st.Ball,"\n");
}
}
+146
count:while(1);
goto count;