#define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
на #define tsk_cpus_allowed(tsk) ((tsk)->cpus_ptr)
. fwrite(array, sizeof(int),array_quantity,in); ... while((num=fgetc(in))!=EOF){ // queue_push(&q,num); printf("%i ",num); }
в начале я добавляю числа 1 2 3 (пример) а из файла получаю 1000 2000 3000
В чем дело?
array_quantity
элементов размером sizeof(int)
каждый, а читаешь из файла посимвольно? IP адреса Source и Destination выводятся одинаковыми
The string is returned in a statically allocated buffer,
which subsequent calls will overwrite.
printf("src address: %s ", inet_ntoa(ip->ip_src));
printf("dest address: %s\n", inet_ntoa(ip->ip_dst));
Насколько хорошим решением является использование сигналов для выведения потоков из спящего режима, и стоит ли для этого использовать ...
Мне нужно текст в text1 преобразовать в число, повысить его на +1 и установить в hwndEdit2
Как можно реализовать, поворот динамического массива (матрица), без доп памяти?
#include <stddef.h>
#include <stdio.h>
typedef int T;
void rotate(T *p, size_t m, size_t n, size_t (*turn)(size_t m, size_t n, size_t idx))
{
size_t i, j, k;
for (i = 0; i < m * n; ++i) {
T tmp0, tmp1;
for (j = 0; j < i; ++j) {
for (k = turn(m, n, j); k != i && k != j; k = turn(m, n, k)) {
}
if (k == i)
break;
}
if (j < i)
continue;
tmp0 = p[i];
for (j = turn(m, n, i); ; j = turn(m, n, j)) {
tmp1 = p[j];
p[j] = tmp0;
tmp0 = tmp1;
if (j == i)
break;
}
}
}
void dump(size_t m, size_t n, T p[m][n])
{
size_t i, j;
for (i = 0; i < m; ++i)
for (j = 0; j < n; ++j)
printf("%d%s", p[i][j], j == n - 1 ? "\n" : ", ");
}
size_t turn_ccw(size_t m, size_t n, size_t idx)
{
return (n - 1 - idx % n) * m + (idx / n);
}
size_t turn_cw(size_t m, size_t n, size_t idx)
{
return (idx % n) * m + m - 1 - (idx / n);
}
#define M 5
#define N 7
int main()
{
size_t i, j;
T a[M][N];
for (i = 0; i < M; ++i)
for (j = 0; j < N; ++j)
a[i][j] = i * N + j;
rotate(&a[0][0], M, N, turn_ccw);
dump(N, M, (T (*)[M])&a[0][0]);
printf("\n");
rotate(&a[0][0], N, M, turn_cw);
dump(M, N, (T (*)[N])&a[0][0]);
}
turn
преобразует линейный индекс элемента из оригинального массива в индекс элемента в повёрнутом массиве..text
.att_syntax
foo:
movb $4, %al
.intel_syntax
mov %al, 4
$ gcc -c att-intel.S
$ objdump -d att-intel.o
att-intel.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <foo>:
0: b0 04 mov $0x4,%al
2: b0 04 mov $0x4,%al
Деасемблирование дало такой результат:
mov ds:0x0,al
Может мне кто-то объяснить что это значит ds:0x0
Есть такой массив (50 элементов):
Задача: написать функцию которая полностью отсортирует данные максимум за 6 вызовов, с условием что за 1 вызов ни один элемент не сместиться больше чем на 5 позиций.
$ strace -f -e clone,write,chdir bash -c "cd | echo 'zz'"
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f1c61235a10) = 7494
strace: Process 7494 attached
[pid 7493] clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f1c61235a10) = 7495
strace: Process 7495 attached
[pid 7494] chdir("/home/jcmvbkbc") = 0
[pid 7495] write(1, "zz\n", 3zz
) = 3
[pid 7494] +++ exited with 0 +++
[pid 7495] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7494, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
+++ exited with 0 +++
Пишу ОС (важно, не выйдет использовать stdarg)
А если вызывать такую функцию (с аргументами "test", 'q'):
void test(char* format, ...) { char* ptr = format; for (int i = -10; i < 10; i++) { putc(*(ptr+i)); } }
Ожидания были таковы, что хотя бы где-то должна была появиться буква q, чего не произошло.
void test(char* format, ...)
{
char *ptr = (char *)&format;
for (int i = -10; i < 10; i++)
{
putc(*(ptr+i));
}
}
Как работает while ( !feof ( cfPtr ) )?
FILE * cfPtr = fopen( "test.txt", "rb" );
char temp;
for (;;) {
int read = fread( &temp, sizeof( char ), 1, cfPtr );
if (read == 1) {
printf("%c\n", temp);
} else {
if (feof(cfPtr)) {
/*случился конец файла*/
} else if (ferror(cfPtr)) {
/* случилась ошибка */
}
break;
}
}
Эх, можно было бы как-то красиво переключать аккаунты между собой
git remote add user_a_at_b https://user_a:user_a_token@github.com/b/b.git