Запитання з тегом «c»

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

3
Що може спричинити появу тимчасово недоступного ресурсу в команді sock send ()
Що може спричинити Resource temporarily unavailableпомилку в send()команді socket ? Розетка налаштована як AF_UNIX, SOCK_STREAM. Це працює більшу частину часу, але іноді отримує цю помилку. Здається, приймальний кінець розетки працює належним чином. Я знаю, що це не дуже детально, але я просто шукаю загальні ідеї. Дякую!
85 c  linux  sockets  unix 

5
Чи snprintf () ЗАВЖДИ нульовим завершенням?
Чи завжди snprintf закінчує нуль завершенням буфера призначення? Іншими словами, чи достатньо цього: char dst[10]; snprintf(dst, sizeof (dst), "blah %s", somestr); або ти повинен робити так, якщо деякий строк достатньо довгий? char dst[10]; somestr[sizeof (dst) - 1] = '\0'; snprintf(dst, sizeof (dst) - 1, "blah %s", somestr); Мене цікавить і …
85 c  posix  libc 

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) **908 …

4
Як Photoshop поєднує два зображення? [зачинено]
Зачинено. Це питання не відповідає вимогам щодо переповнення стека . Наразі відповіді не приймаються. Хочете покращити це питання? Оновіть питання, щоб воно було актуальним для переповнення стека. Закрито минулого року . Удосконалюйте це питання Чи може хтось пояснити, як Photoshop поєднує два зображення разом, щоб я міг відтворити ті самі …

12
Чому `free` у C не бере кількість байтів, які потрібно звільнити?
Щоб зрозуміти: я знаю це mallocі freeреалізовано в бібліотеці C, яка зазвичай виділяє фрагменти пам’яті з ОС та здійснює власне управління для парцеляції менших обсягів пам’яті додатку та відстежує кількість виділених байтів . Це питання не в тому, як безкоштовні знають, скільки безкоштовно . Швидше, я хочу знати, чому взагалі …



7
Як викликати функцію C ++ з C?
Я знаю, що це. Виклик функції C з C ++: Якби моя програма була на C ++, і мені довелося викликати функції з бібліотеки, написаної на C. Тоді я б використав //main.cpp extern "C" void C_library_function(int x, int y);//prototype C_library_function(2,4);// directly using it. Це не призведе до перекручування імені, C_library_functionі …
84 c++  c  visual-c++  extern-c 

10
Надшвидка хеш-карта C / C ++ (таблиця, словник) [закрито]
Зачинено. Це питання не відповідає вимогам щодо переповнення стека . Наразі відповіді не приймаються. Хочете покращити це питання? Оновіть питання, щоб воно було актуальним для переповнення стека. Закрито 5 років тому . Удосконалюйте це питання Мені потрібно зіставити примітивні ключі (int, можливо, довгі) для структурування значень у високопродуктивній структурі даних …

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; } …

12
Як очистити вхідний буфер в C?
У мене є така програма: int main(int argc, char *argv[]) { char ch1, ch2; printf("Input the first character:"); // Line 1 scanf("%c", &amp;ch1); printf("Input the second character:"); // Line 2 ch2 = getchar(); printf("ch1=%c, ASCII code = %d\n", ch1, ch1); printf("ch2=%c, ASCII code = %d\n", ch2, ch2); system("PAUSE"); return 0; …
84 c  buffer 

2
Як, власне, працює подвійний струнний трюк?
Принаймні деякі препроцесори C дозволяють вам обробляти значення макросу, а не його ім'я, передаючи його через один функціональний макрос іншому, який його обробляє: #define STR1(x) #x #define STR2(x) STR1(x) #define THE_ANSWER 42 #define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */ Приклади випадків використання тут . Це справді працює, принаймні в GCC та …

12
Як я можу отримати свій код C для автоматичного роздрукування його хеш-версії Git?
Чи є простий спосіб написати код C, який може отримати доступ до свого хешу версії Git? Я написав програмне забезпечення на С для збору наукових даних у лабораторних умовах. Мій код записує дані, які він збирає, у файл .yaml для подальшого аналізу. Мої експерименти змінюються щодня, і мені часто доводиться …

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

5
Розуміння INADDR_ANY для програмування сокетів
Я намагаюся запрограмувати деякі сокети, і тому, на стороні сервера, я використовую htonl(INADDR_ANY). Наскільки я зрозумів, мені здається, що ця функція генерує випадковий IP (чи правильно я?). Насправді, я хочу пов’язати свою розетку з моєю localhost. Але якщо я запустити це printf("%d",htonl(INADDR_ANY)); Я отримую 0 як повернене значення. Хтось міг …
84 c  sockets 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.