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

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

3
Как получить указатель на ФАЙЛ из файлового дескриптора?
Я играю с mkstemp(), который предоставляет дескриптор файла, но я хочу генерировать форматированный вывод через fprintf(). Есть ли простой способ преобразовать файловый дескриптор, предоставленный mkstemp()в FILE *структуру, подходящую для использования fprintf()?
86 c  posix  mkstemp 

8
Почему я получаю ошибку утверждения C malloc?
Я реализую полиномиальный алгоритм «разделяй и властвуй», поэтому могу сравнить его с реализацией OpenCL, но не могу приступить mallocк работе. Когда я запускаю программу, она выделяет кучу данных, кое-что проверяет, а затем отправляет size/2в алгоритм. Затем, когда я mallocснова нажимаю на линию, она выплевывает это: malloc.c:3096: sYSMALLOc: Assertion `(old_top == …
86 c  gcc  malloc  assertion 

13
Как очистить массив символов?
Имейте массив символов, например char members [255]. Как я могу полностью его очистить, не используя цикл? char members[255]; Под «пустым» я подразумеваю, что если в нем были сохранены некоторые значения, то этого не должно быть. Например, если я использую strcat, старое значение не должно оставаться members = "old value"; //empty …
86 c  arrays  char 

6
C - функция внутри структуры
Я пытаюсь создать функцию внутри структуры, пока у меня есть этот код: typedef struct client_t client_t, *pno; struct client_t { pid_t pid; char password[TAM_MAX]; // -> 50 chars pno next; pno AddClient() { /* code */ } }; int main() { client_t client; //code .. client.AddClient(); } Ошибка : client.h: …
86 c  function  struct 

3
Большая разница (x9) во времени выполнения между почти идентичным кодом на C и C ++
Я пытался решить это упражнение с сайта www.spoj.com: FCTRL - Factorial Вам не обязательно это читать, просто сделайте это, если вам интересно :) Сначала я реализовал это на C ++ (вот мое решение): #include <iostream> using namespace std; int main() { unsigned int num_of_inputs; unsigned int fact_num; unsigned int num_of_trailing_zeros; …
85 c++  c  performance  gcc  iostream 


4
dup2 / dup - зачем мне дублировать дескриптор файла?
Я пытаюсь понять использование dup2и dup. На странице руководства: DESCRIPTION dup and dup2 create a copy of the file descriptor oldfd. After successful return of dup or dup2, the old and new descriptors may be used interchangeably. They share locks, file position pointers and flags; for example, if the file …

15
Как я могу сравнить строки в C с помощью оператора switch?
В C есть switchконструкция, которая позволяет выполнять различные условные ветви кода на основе тестового целочисленного значения, например, int a; /* Read the value of "a" from some source, e.g. user input */ switch (a) { case 100: // Code break; case 200: // Code break; default: // Code break; } …

9
«Время жизни» строкового литерала в C
Разве указатель, возвращаемый следующей функцией, не будет недоступен? char *foo(int rc) { switch (rc) { case 1: return("one"); case 2: return("two"); default: return("whatever"); } } Значит, время жизни локальной переменной в C / C ++ находится практически только внутри функции, верно? Это означает, что после char* foo(int)завершения указатель, который он …

12
Безопасно ли возвращать структуру на C или C ++?
Я понимаю, что этого делать не следует, но я считаю, что видел примеры, которые делают что-то подобное (код заметки не обязательно синтаксически правильный, но идея есть) typedef struct{ int a,b; }mystruct; А вот функция mystruct func(int c, int d){ mystruct retval; retval.a = c; retval.b = d; return retval; } …

8
Как проверить, начинается ли строка с другой строки в C?
Есть ли что-то подобное startsWith(str_a, str_b)в стандартной библиотеке Си? Он должен принимать указатели на две строки, которые заканчиваются нулевыми байтами, и сообщать мне, появляется ли первая также полностью в начале второй. Примеры: "abc", "abcdef" -> true "abcdef", "abc" -> false "abd", "abdcef" -> true "abc", "abc" -> true

4
Выборочно отключить предупреждения GCC только для части единицы перевода?
Какой GCC наиболее близок к этому коду препроцессора MSVC? #pragma warning( push ) // Save the current warning state. #pragma warning( disable : 4723 ) // C4723: potential divide by 0 // Code which would generate warning 4723. #pragma warning( pop ) // Restore warnings to previous state. У нас …

7
Пробелы с автоматическим отступом с C в vim?
Я был несколько испорчен использованием Eclipse и java. Я начал использовать vim для кодирования C в среде Linux, есть ли способ, чтобы vim автоматически делал правильный интервал для блоков? Итак, после ввода {следующая строка будет иметь 2 пробела с отступом, и возврат в этой строке сохранит ее с тем же …
85 c  vim  coding-style  vi 

3
Что может вызвать сообщение «Ресурс временно недоступен» в команде sock send ()
Что может вызвать Resource temporarily unavailableошибку в send()команде сокета ? Сокет настроен как AF_UNIX, SOCK_STREAM. В большинстве случаев это работает, но иногда возникает эта ошибка. Принимающий конец розетки работает правильно. Я знаю, что это не очень подробно, но я просто ищу общие идеи. Благодаря!
85 c  linux  sockets  unix 

8
Почему GDB непредсказуемо перескакивает между строками и выводит переменные как «<оптимизированное значение>»?
Может ли кто-нибудь объяснить такое поведение gdb? 900 memset(&amp;new_ckpt_info,'\0',sizeof(CKPT_INFO)); (gdb) **903 prev_offset = cp_node-&gt;offset;** (gdb) **905 m_CPND_CKPTINFO_READ(ckpt_info,(char *)cb-&gt;shm_addr.ckpt_addr+sizeof(CKPT_** HDR),i_offset); (gdb) **903 prev_offset = cp_node-&gt;offset;** (gdb) **905 m_CPND_CKPTINFO_READ(ckpt_info,(char *)cb-&gt;shm_addr.ckpt_addr+sizeof(CKPT_ HDR),i_offset);** (gdb) **908 bitmap_offset = client_hdl/32;** (gdb) **910 bitmap_value = cpnd_client_bitmap_set(client_hdl%32);** (gdb) **908 bitmap_offset = client_hdl/32;** (gdb) **910 bitmap_value = cpnd_client_bitmap_set(client_hdl%32);** (gdb) …

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