- 1
value += (0<<17); // PARK bit
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+124
value += (0<<17); // PARK bit
+143
#include <stdio.h>
int main(void)
{
int d2[3][3][3];
int i,i2,i3;
for(i = 0; i <= 3; ++i)
for(i2 = 0; i2 <= 3; ++i2)
for(i3 = 0; i3 <= 3; ++i3)
d2[i][i2][i3]=5;
i=0,i2=0,i3=0;
for(i = 0; i <= 3; ++i)
for(i2 = 0; i2 <= 3; ++i2)
for(i3 = 0; i3 <= 3; ++i3)
printf("%d\n",d2[i][i2][i3]);
return 0;
}
играюсь я короче с массивом, этот код компилируется,все печатает но в конце Segmentation fault, почему?
gcc -Wall -Wextra -Werror -Wpedantic -ftrapv -fwrapv -fdiagnostics-show-option -std=gnu11 -o "test" "test.c"
+130
char* obrab_stroki(char*, int);
int move(char*);
int action_register(char*);
int speed(char*);
int condition(char*);
char answer1[25];
uint8_t Output[512];
uint32_t number_for_output=16;
typedef struct { char *name; uint8_t adress; } struct_label;
typedef struct { char *name; uint8_t adress; } struct_goto_label;
//----------------------------------------------------------------------------------------
while (strcmp(qwerty[++string_count],""))
{
str=obrab_stroki(qwerty[string_count], 0);
printf("s:%s\n",str);
if (!strcmp(qwerty[string_count]+strlen(qwerty[string_count])-1,"{")) fig_skob++;
if (!strcmp(qwerty[string_count]+strlen(qwerty[string_count])-1,"}")) fig_skob--;
if (!strcmp(qwerty[string_count]+strlen(qwerty[string_count])-1,"{") && !strcmp(str,"if")) { fig_skob_if++; adres_return[fig_skob_if]=number_for_output+3; }
if (!strcmp(qwerty[string_count]+strlen(qwerty[string_count])-1,"}") && fig_skob_if>0) { Output[adres_return[fig_skob_if]]=number_for_output; fig_skob_if--;}
if (fig_skob==0)
{
Output[number_for_output++]=0;
Output[number_for_output++]=0;
}
if (!strcmp(qwerty[string_count]+strlen(qwerty[string_count])-1,":"))
{
label[number_label].name=qwerty[string_count];
label[number_label++].adress = number_for_output;
continue;
}
//-------------------------------------------------------------------------------------------
if (!strcmp(str,"r")) if (action_register(qwerty[string_count]) == 1) {printf("ERROR in string: %d", string_count); return 1;} else continue;
if (!strcmp(str,"move")) if (move(qwerty[string_count]) == 1) {printf("ERROR in string: %d", string_count); return 1;} else continue;
if (!strcmp(str,"speed")) if (speed(qwerty[string_count]) == 1) {printf("ERROR in string: %d", string_count); return 1;} else continue;
if (!strcmp(str,"if")) if (condition(qwerty[string_count]) == 1) {printf("ERROR in string: %d", string_count); return 1;} else continue;
//-----------------------------------------------------------------------------------------
char* obrab_stroki(char* qwerty, int i)
{
int count;
char asnwer1[25];
for (count=0; (qwerty[count+i]<='z' && qwerty[count+i]>='a') || (qwerty[count+i]<='Z' && qwerty[count+i]>='A'); count++)
{
answer1[count]=qwerty[count+i];
}
answer1[count]='\0';
return answer1;
}//тут как бы нет ошибок =)
//----------------------------------------------------------------------------------------------
if (qwerty[i]=='-')
{
if (qwerty[i+1]=='1' && qwerty[i+2]=='0')
{
Output[number_for_output++]=answer|MOTOR_SPEC_SPEED_DEC;
Output[number_for_output++]=0;
return 0;
}
else
return 1;
}
Человек писал компилятор. Самые эпичные моменты
+133
#include <stdio.h>
int main () {
char c;
int result=0;
while(scanf("%c",&c) ) {
if( (c<'0') || (c > '1') ) break;
result«=1;
result+=c-'0';
};
printf("%d",result);
return 0;
}
Этот код переводит число из двоичной системы в десятичную. Зачем-то основано на работе с символами.
+134
void MSSequencerPatternCopyToMusicTrack(MSSequencerPatternRef self, MusicTrack track)
{
// Get signature and length of pattern
TimeSignature sign = MSSequencerPatternGetTimeSignature(self);
CABarBeatTime length = pattern_barbeat_duration_without_mutes(self);
CABarBeatTime insert = CABarBeatTime(1, 1);
// Get muted beats
CFRange *mutedBeats = (CFRange*)CFDataGetBytePtr(self->mutedBeats);
CFIndex mutedCount = CFDataGetLength(self->mutedBeats) / sizeof(CFRange);
// Copy with muted regions
if (mutedCount > 0)
{
// Clear output track
MSSequencerTrackClear(self->parent, track);
// Copy phrase by phrase
for (int i = 0; i < mutedCount; ++i)
{
CFRange muteRange = mutedBeats[i];
CFIndex beatsCount = (sign.numerator * sign.denominator);
if ((beatsCount * (i + 1)) > muteRange.location + muteRange.length)
{
if (muteRange.length > 0)
{
// Copy beats before mute range
if (muteRange.location > (beatsCount * i))
{
CFIndex start = (beatsCount * i);
CFIndex end = muteRange.location;
insert = copy_beats_to_track_from_beat_to_beat(self, track, sign, insert, start, end);
}
// Copy beats after range
{
CFIndex start = (muteRange.location + muteRange.length);
CFIndex end = (beatsCount * (i + 1));
insert = copy_beats_to_track_from_beat_to_beat(self, track, sign, insert, start, end);
}
}
else
{
// Copy without mutes
CFIndex start = (beatsCount * i);
CFIndex end = (beatsCount * (i + 1));
insert = copy_beats_to_track_from_beat_to_beat(self, track, sign, insert, start, end);
}
}
else
{
// Copy beats
CFIndex firstBeat = (muteRange.location + muteRange.length) % beatsCount;
CABarBeatTime start = CABarBeatTimeAddBeats(CABarBeatTime(1, 1), sign, (beatsCount * i) + firstBeat);
CABarBeatTime end = CABarBeatTimeAddBeats(start, sign, (beatsCount - muteRange.length));
copy_beats_from_pattern_to_track(self, track, start, end, insert);
//CFLog("start: {%i, %i}, end: {%i, %i}, insert: {%i, %i}", (int)start.bar, (int)start.beat, (int)end.bar, (int)end.beat, (int)insert.bar, (int)insert.beat);
// Update insert time
insert = CABarBeatTimeAddBeats(insert, sign, (beatsCount - muteRange.length));
}
}
}
// Copy without muted regions
else
{
copy_beats_from_pattern_to_track(self, track, insert, length, insert);
}
//CAShow(track);
}
Вот такая вот какашечка...
+137
// For a portable version of timegm(), set the TZ environment variable to
// UTC, call mktime(3) and restore the value of TZ. Something like
#include <time.h>
#include <stdlib.h>
time_t
my_timegm(struct tm *tm)
{
time_t ret;
char *tz;
tz = getenv("TZ");
if (tz)
tz = strdup(tz);
setenv("TZ", "", 1);
tzset();
ret = mktime(tm);
if (tz) {
setenv("TZ", tz, 1);
free(tz);
} else
unsetenv("TZ");
tzset();
return ret;
}
Цитата из man timegm. Сборка unix timestamp из компонент (год, месяц и т.п.).
Удобно, наглядно, потокобезопасно.
+133
void Nay_Prer_Timer2(void)
{
Obr_Func_Prer.Sh_Time2 = Obr_Func_Prer.Sh_Time2_Init;
Spec_Vkl_Indic.Sh_Time2 = Spec_Vkl_Indic.Sh_Time2_Init;
Spec_Vykl_Indic.Sh_Time2 = Spec_Vykl_Indic.Sh_Time2_Init;
Flag_Morg=0; // Флаг моргания для Config_Bibl_Max6954
Flag_Vykl_Diod=0;
if(Config_Bibl_Max6954&0x4) // 2-й бит =1 - Прерывания разрешены
Vkl_Prer_Timer2();
return;
}
Чел писал тестовое задание для микроконтроллера (поморгать светодиодами).
На вопрос что означает слово Nay в названии функции был дан ответ - это сокращение от нач. (начало).
+133
if (dbg)
printf("2\n");
// This is debug mode
+133
//......................................
void DlPortWritePortUshort(WORD addr, WORD data) {
DWORD br;
(&addr)[1]=data;
DeviceIoControl(hdriver,IOCTL_WRITE_PORT_USHORT,&addr,4,NULL,0,&br,NULL);
}
DWORD DlPortReadPortUlong(WORD addr) {
DWORD br;
DeviceIoControl(hdriver,IOCTL_READ_PORT_ULONG,&addr,2,&addr,4,&br,NULL);
return *(DWORD*)&addr;
}
void DlPortWritePortUlong(WORD addr, DWORD data) {
DWORD br;
DeviceIoControl(hdriver,IOCTL_WRITE_PORT_ULONG,&addr,8,NULL,0,&br,NULL);
}
//......................................
Кусок очередного форка dll-ки для работы с очередным, мать его, форком драйвера inpout32.sys.
Попался в поисках исправленного драйвера и dll-обёртки для него.
+144
#include <stdio.h>
int main(void)
{
puts("1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n97\n99");
return 0;
}
Выводим все нечетные числа от 0 до 100. Одно число - одна строка.