Вопросы с тегом «c»

C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.

2
Как этот код генерирует карту Индии?
Этот код печатает карту Индии. Как это работает? #include <stdio.h> main() { int a,b,c; int count = 1; for (b=c=10;a="- FIGURE?, UMKC,XYZHello Folks,\ TFy!QJu ROo TNn(ROo)SLq SLq ULo+\ UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\ NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\ HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\ T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\ Hq!WFs XDt!" [b+++21]; ) for(; a-- > 64 ; ) putchar ( …
169 c  obfuscation 

1
Быстрый метод округления двойного к 32-битному int объяснил
Читая исходный код Lua , я заметил, что Lua использует macroокругление doubleдо 32-разрядного числа int. Я извлек macro, и это выглядит так: union i_cast {double d; int i[2]}; #define double2int(i, d, t) \ {volatile union i_cast u; u.d = (d) + 6755399441055744.0; \ (i) = (t)u.i[ENDIANLOC];} Здесь ENDIANLOCопределяется как endianness …

13
Размер C «int» 2 байта или 4 байта?
Переменная Integer в C занимает 2 байта или 4 байта? От каких факторов это зависит? В большинстве учебников говорится, что целочисленные переменные занимают 2 байта. Но когда я запускаю программу, печатающую последовательные адреса массива целых чисел, это показывает разницу 4.
169 c  int  byte 


6
В Си, почему некоторые люди приводят указатель перед освобождением?
Я работаю над старой базой кода и почти каждый вызов free () использует приведение своего аргумента. Например, free((float *)velocity); free((float *)acceleration); free((char *)label); где каждый указатель имеет соответствующий (и соответствующий) тип. Я не вижу смысла делать это вообще. Это очень старый код, поэтому мне остается только подумать, что это за …
167 c  pointers  casting 

18
Какой самый быстрый алгоритм поиска подстроки?
Итак, я не похож на идиота, я собираюсь изложить проблему / требования более четко: Игла (образец) и стог сена (текст для поиска) - строки с нулевым окончанием в стиле C. Информация о длине не предоставляется; если необходимо, оно должно быть вычислено. Функция должна вернуть указатель на первое совпадение или, NULLесли …
167 c  algorithm  string  substring 

9
Почему volatile не считается полезным в многопоточном программировании на C или C ++?
Как показано в этом ответе, который я недавно опубликовал, мне кажется, что я не совсем понимаю полезность (или ее отсутствие) volatileмногопоточного программирования. Насколько я понимаю, в любой момент, когда переменная может быть изменена вне потока контроля фрагмента кода, обращающегося к ней, эта переменная должна быть объявлена volatile. Обработчики сигналов, регистры …

9
Есть ли замена для unistd.h для Windows (Visual C)?
Я портирую относительно простую консольную программу, написанную для Unix, на платформу Windows ( Visual C ++ 8.0 ). Все исходные файлы включают в себя "unistd.h", который не существует. Удаляя его, я получаю жалобы на отсутствие прототипов для 'srandom', 'random' и 'getopt'. Я знаю, что могу заменить случайные функции, и я …
165 c++  c  windows  portability  unistd.h 

4
Почему я ++; я--; сразу после друг друга?
Я искал исходный код для nmap, который был выпущен в 1997 году, и заметил этот фрагмент кода, который выглядит немного странным для меня: int i=0, j=0,start,end; char *expr = strdup(origexpr); ports = safe_malloc(65536 * sizeof(short)); i++; /* <<<<<< */ i--; /* <<<<<< */ for(;j < exlen; j++) if (expr[j] != …
164 c  nmap 

20
«For (;;)» быстрее, чем «while (TRUE)»? Если нет, то почему люди используют это?
for (;;) { //Something to be done repeatedly } Я видел, как подобные вещи часто используются, но я думаю, что это довольно странно ... Разве не было бы намного яснее сказать while(true)или что-то в этом роде? Я предполагаю, что (как причина, по которой многие программисты прибегают к загадочному коду), это …

3
Как мне установить условную точку останова в GDB, когда char * x указывает на строку, значение которой равно «привет»?
Могу ли я указать, что я хочу, чтобы gdb разрывался в строке x, когда он char* xуказывает на строку, значение которой равно "hello"? Если да, то как?

4
предупреждение: несовместимое неявное объявление встроенной функции 'xyz'
Я получаю ряд этих предупреждений при компиляции нескольких двоичных файлов: warning: incompatible implicit declaration of built-in function ‘strcpy’ warning: incompatible implicit declaration of built-in function ‘strlen’ warning: incompatible implicit declaration of built-in function ‘exit’ Чтобы попытаться решить эту проблему, я добавил #include <stdlib.h> вверху файлов C, связанных с этим предупреждением, …
164 c  gcc  gcc-warning 

24
Макрос __FILE__ показывает полный путь
Стандартный предопределенный макрос, __FILE__доступный в C, показывает полный путь к файлу. Есть ли способ сократить путь? Я имею ввиду вместо /full/path/to/file.c я вижу to/file.c или file.c
164 c  file  macros  path 

5
Небезопасен ли пакет gcc для __attribute __ ((упакованный)) / #pragma?
В C компилятор будет размещать элементы структуры в порядке, в котором они объявлены, с возможными байтами заполнения, вставляемыми между элементами или после последнего, чтобы гарантировать правильное выравнивание каждого элемента. gcc предоставляет расширение языка __attribute__((packed)), которое говорит компилятору не вставлять отступы, позволяя неправильно выравнивать члены структуры. Например, если система обычно требует, …
164 c  gcc  pragma-pack 

6
Как получить текущий каталог в программе на C?
Я делаю программу на C, где мне нужно получить каталог, из которого запускается программа. Эта программа написана для компьютеров UNIX. Я смотрел opendir()и telldir(), но telldir()возвращает off_t (long int), так что это действительно не помогает мне. Как я могу получить текущий путь в строке (массив символов)?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.