c- все статьи тега ➜ страница 4


Будет ли инициализатор строки несколько тратить память?

Чтобы инициализировать массив символов, обычно я пишу: char string[] = "some text"; Но сегодня один из моих одноклассников сказал, что нужно использовать: char string[] = {'s', 'o', 'm', 'e', ' ', 't', 'e', 'x', 't', ''}; Я сказал ему, что это безумие-отказаться от удобочитаемости и краткости, но он утверждал, что инициализация массива символов строкой фактически создаст две строки, одну в стеке, а другую в памяти только для чтения. При работе со встроенными устройствами это может прив ...

что по WinAPI подставка для

Я начал изучать Win32 API в C. Я видел, что основная функция-это что-то вроде int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { .. } Но я знаю, что функция в C похожа на [ReturnType] [FunctionName] (Args) { .. } В этом случае тип возвращаемого значения-int, а имя функции-WinMain. Так что же означает WINAPI и является ли это необходимым? Спасибо . :) ...

Размер WM не работает должным образом

У меня проблема с WM_SIZE. Я хочу захватить его с помощью PeekMessage (не WndProc). PeekMessage никогда не получает WM_SIZE, поэтому я отправляю дополнительное пользовательское сообщение в окно, чтобы захватить его с помощью PeekMessage, как это (код из WnProc) : case WM_SIZE: PostMessageW(hwnd, WM_USER + 1, wParam, lParam); break; Проблема в том, что я получаю WM_USER + 1 с помощью PeekMessage только тогда, когда окно развернуто или восстановлено. Нет сообщения, когда окно изменяется по ...

C-могу ли я создать переменную const char * из char *?

Причина, по которой я хотел бы сделать это, заключается в том, что я хочу читать из файла построчно и для каждой строки проверять, соответствует ли она регулярному выражению. Я использую функцию getline (), которая помещает строку в переменную типа char *. Я пытаюсь использовать regexec() для проверки соответствия регулярных выражений, но эта функция хочет, чтобы вы предоставили строку для соответствия в виде const char *. Итак, мой вопрос в том, Могу ли я создать const char * из char *? Или, в ...

Заставить malloc () возвращать NULL вместо сбоя программы?

Я выделяю память в программе на языке Си с помощью malloc. Это возможно для моей программы выделить больше памяти, чем система имеет место для, и в этот момент программа аварийно завершает работу. Для моих целей было бы лучше, если бы malloc просто вернул NULL (как это, по-видимому, предполагается), так что я могу поймать ошибку. Вместо этого он выдает ошибку, говорящую: "нет памяти, доступной для программы сейчас: небезопасно вызывать malloc.- И программа выходит из строя. Как я могу исправит ...

Как проверить, открыт ли stdin по-прежнему без блокировки?

Мне нужно, чтобы моя программа, написанная на чистом языке Си, останавливала выполнение при закрытии stdin. В основном цикле программы выполняется неопределенная работа, и я никак не могу использовать блокирующие проверки (например, getc()) (данные не должны поступать на stdin - он просто остается открытым в течение неизвестного времени). Я намерен использовать описанную функциональность в реализации сетевого демона, размещенного в inetd, xinetd или их аналогах - он должен выдавать данные на s ...

Динамически выделяемых массивов МПИ

У меня есть проблема с динамическим распределением массивов. Этот код, если я использую статическое распределение, выполняется без проблем... int main (int argc, char *argv[]){ int size, rank; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); int lowerBound = 0, upperBound = 0, dimArrayTemp, x, z; int dimBulk = size - 1, nPart, cnt; FILE *pf; pf = fopen("in.txt","r"); ...

Почему ((unsigned char) 0x80) <24 получает знак, расширенный до 0xFFFFFFFF80000000 (64-разрядный)?

Следующая программа #include <inttypes.h> /* printf(" %" PRIu32 "n"), my_uint32_t) */ #include <stdio.h> /* printf(), perror() */ int main(int argc, char *argv[]) { uint64_t u64 = ((unsigned char)0x80) << 24; printf("%" PRIX64 "n", u64); /* uint64_t */ u64 = ((unsigned int)0x80) << 24; printf("%016" PRIX64 "n", u64); } Производит FFFFFFFF80000000 0000000080000000 В чем разница между ((unsigned char)0x80) и ((unsigned int)0x80) в этом контексте? Я ...

Socket accept - " слишком много открытых файлов"

Я работаю над школьным проектом, где мне пришлось написать многопоточный сервер, и теперь я сравниваю его с apache, проводя некоторые тесты против него. Я использую autobench, чтобы помочь с этим, но после того, как я выполняю несколько тестов, или если я даю ему слишком высокую скорость (около 600+), Чтобы сделать соединения, я получаю ошибку "слишком много открытых файлов". После того, как я закончил работу с запросом, я всегда делаю close() на сокете. Я также пытался использовать функцию sh ...

Что такое posix fadvise () args для последовательной записи файлов?

Я работаю над приложением, которое последовательно записывает большой файл (и не читает вообще), и я хотел бы использовать posix_fadvise() для оптимизации поведения файловой системы. Описание функции в manpage предполагает, что наиболее подходящей стратегией будет POSIX_FADV_SEQUENTIAL. Однако описание реализации Linux сомневается, что: Под Linux, POSIX_FADV_NORMAL устанавливает окна опережающего считывания для размера по умолчанию для резервного устройства; POSIX_FADV_SEQUENTIAL удваивает ...

Как восстановить перезаписанный файл?

У меня была полностью функциональная программа, которую я случайно скомпилировал как gcc calendar.c -o calendar.c Вместо gcc calendar.c -o calendar Что ужасно, потому что исполняемый файл просто переписал мой исходный код. Есть ли способ отменить это или каким-то образом изменить исполняемый файл, чтобы вернуть мой код? Я только что потерял всю свою работу из-за очень глупой ошибки, и я стараюсь не паниковать. Я не использую Github или любую другую программу восстановления (которую мн ...

uint64 t к int

Я пишу привязку java для кода C, и я действительно не знаком с C. У меня есть uint64_t, и мне нужно привести его к int. Кто-нибудь знает, как это сделать? (Моя привязка возвращает тогда jint...) ...

Работа с изображениями на языке C++ или C

Во-первых, я новичок. Ладно? Я прочитал соответствующие ответы и вопросы, но, пожалуйста, помогите мне с этой проблемой: Как открыть файл JPEG-изображения на языке C++, преобразовать его в изображение в оттенках серого, получить его гистограмму, изменить размер на меньшее изображение, обрезать определенную область или показать определенную область? Для этих задач C или C++ быстрее в целом? Какие библиотеки самые простые и быстрые? Время выполнения очень важный. Спасибо. ...

Несколько исходных файлов в проекте приложения C / C++ (NetBeans)

Я создал новый проект C/C++ через File > New Project > C/C++ > C/C++ Application. Однако в папке Source Files допускается только 1 исходный файл с именем main. Есть ли способ включить более 1 исходного файла main в папку Source Files? Или мне нужно создать новый проект для каждого исходного файла ? Напротив, для каждого проекта Java в нем может быть много файлов .java. Я пытаюсь найти такую же функциональность для приложений C / C++. Спасибо. ...

Подсчитайте количество вхождений каждой буквы в строке

Как я могу подсчитать количество вхождений в c каждой буквы (игнорируя регистр) в строке? Чтобы он мог вывести letter: # number of occurences, у меня есть код для подсчета встречаемости одной буквы, но как я могу подсчитать появление каждой буквы в строке? { char int count = 0; int i; //int length = strlen(string); for (i = 0; i < 20; i++) { if (string[i] == ch) { count++; } } return count; } Вывод: a : 1 b : 0 c : 2 ...

Правильное использование getsockopt и setsockopt для SO RCVTIMEO и SO SNDTIMEO

По разным причинам я хотел бы реализовать timeout на чтение и запись в сокет на сервере, но не удается запустить его и поэтому любезно прошу некоторого понимания, где может находиться проблема. Для установки таймаута на чтение и запись в сокет я пытаюсь использовать функции setsocketopt() и getsocketopt(). Однако я, должно быть, делаю что-то не так, поскольку возвращаемое значение указывает на то, что произошла проблема, и perror выводит "недопустимый аргумент". Как ни странно ошибка не всегда ...

C комплексное число и printf

Как вывести (с помощью printf ) комплексное число? Например, если у меня есть такой код: #include <stdio.h> #include <complex.h> int main(void) { double complex dc1 = 3 + 2*I; double complex dc2 = 4 + 5*I; double complex result; result = dc1 + dc2; printf(" ??? n", result); return 0; } ..какие спецификаторы преобразования ( или что-то еще ) я должен использовать вместо этого "???" ...

Какие части этого ассемблерного кода HelloWorld необходимы, если я пишу программу в ассемблере?

У меня есть такая короткая программа hello world: #include <stdio.h> static const char* msg = "Hello world"; int main(){ printf("%sn", msg); return 0; } Я скомпилировал его в следующий ассемблерный код с помощью gcc: .file "hello_world.c" .section .rodata .LC0: .string "Hello world" .data .align 4 .type msg, @object .size msg, 4 msg: .long .LC0 .text .globl main .type main, @function main: .LFB0: .cfi_startproc ...

shmat () возвращает другой "shmaddr" для того же " shmkey"

Вот моя установка... /* Bounded Buffer item structure */ struct item { int id; /* string index value */ char str[80]; /* string value */ }; /* Structure for the shared memory region */ typedef struct { int debug; /* debug flag */ int in; /* index of next empty slot */ int out; /* index of next full slot */ char MUTEXname[32]; /* name of the MUTEX semaphore */ char EMPTYname[32]; /* name of the EMPTY semapho ...

Сбой программы после использования scanf

Это программа, которую я написал, которая вычисляет время посадки самолета, когда вы даете ему стартовое время, и он летит в течение секунды. Но когда я запускаю программу и вставляю первый номер в консоль, она сразу же вылетает. #include <stdio.h> int main (void) { int m, s; int u; long flight, landing; printf("insert time of taking a plane:n time in hours: "); scanf("%d, &u"); printf(" minutes: "); scanf("%d", &m); printf(" seconds: "); sc ...