c- все статьи тега ➜ страница 17
Передача массива по ссылке в C?
Как я могу передать массив структур в Си? в качестве примера: struct Coordinate { int X; int Y; }; SomeMethod(Coordinate *Coordinates[]){ //Do Something with the array } int main(){ Coordinate Coordinates[10]; SomeMethod(&Coordinates); } ...
Разбор JSON с помощью C [закрыто]
Я пытаюсь найти хороший способ разбора JSON в C. Мне действительно не нужна огромная библиотека или что-то еще, я бы предпочел что-то маленькое и легкое с минимальным количеством функций, но хорошей документацией. кто-нибудь может мне точку в? ...
Компилятор не обнаруживает явно неинициализированную переменную
все компиляторы C, которые я пробовал, не будут обнаруживать неинициализированные переменные в приведенном ниже фрагменте кода. Тем не менее, случай здесь очевиден. не беспокойтесь о функциональности этого фрагмента. Это не настоящий код, и я снял его для расследования этого вопроса. BOOL NearEqual (int tauxprecis, int max, int value) { int tauxtrouve; // Not initialized at this point int totaldiff; // Not initialized at this point for (int i = 0; i < max; i++) { if ...
В чем смысл const void?
по-видимому, можно объявить функцию, возвращающую const void: const void foo() { } g++, кажется, рассматривает const важно, потому что следующий код не компилируется: #include <type_traits> static_assert(std::is_same<void(), const void()>::value, "const matters"); так же как и const void имеют ли они какое-либо практическое значение? ...
Зачем переключать / Case, а не If / Else If?
этот вопрос в основном указывал на C / C++, но я думаю, что другие языки также актуальны. Я не могу понять, почему switch/case все еще используется вместо if/else if. Мне кажется, что это очень похоже на использование goto, и приводит к такому же беспорядочному коду, в то время как те же результаты могут быть получены с помощью if/else if в гораздо более организованном виде. тем не менее, я вижу эти блоки вокруг довольно часто. Общее место для их поиска находится рядом с циклом сообщений (WndP ...
Быстрый способ генерации псевдослучайных битов с заданной вероятностью 0 или 1 для каждого бита
как правило, генератор случайных чисел возвращает поток битов, для которых вероятность наблюдать 0 или 1 в каждой позиции равна (т. е. 50%). Давайте назовем это непредвзятым PRNG. мне нужно сгенерировать строку псевдослучайных битов со следующим свойством: вероятность увидеть 1 в каждой позиции равна p (т. е. вероятность увидеть 0 равна 1-p). Параметр p является вещественным числом от 0 до 1; в моей задаче бывает, что он имеет разрешение 0,5%, т. е. он может принимать значения 0%, 0.5%, 1%, 1.5 ...
Перенаправление stdin и stdout в C
я хочу открыть stdin и stdout (и, возможно,stderr пока я на нем) filehandles, так что будущие вызовы printf() или putchar() или puts() будет идти в файл, и будущие вызовы getc() и такие будут исходить из файла. 1) я не хочу постоянно терять стандартный ввод/вывод/ошибку. Возможно, я захочу использовать их позже в программе. 2) я не хочу открывать новые файловые хэндлы, потому что эти файловые хэндлы должны быть либо переданы много или глобально (содрогание). 3) я не хочу использовать любой op ...
Почему я не могу конвертировать 'типа char*' в 'const чарса* константность*' в C?
следующий фрагмент кода (правильно) дает предупреждение в C и ошибку в C++ (используя gcc & g++ соответственно, протестированный с версиями 3.4.5 и 4.2.1; MSVC, похоже, не заботится): char **a; const char** b = a; Я могу понять и принять это. C++ решение этой проблемы состоит в том, чтобы изменить b на const char * const *, который запрещает переназначение указателей и не позволяет вам обойти const-корректность (C++ FAQ). char **a; const char* const* b = a; однако в чистом C исправленн ...
Как получить указатель интерфейса JNI (JNIEnv *) для асинхронных вызовов
Я узнал, что указатель интерфейса JNI (JNIEnv *) действителен только в текущем потоке. Предположим, я запустил новый поток внутри собственного метода; как он может асинхронно отправлять события в метод Java? Поскольку этот Новый Поток не может иметь ссылку (JNIEnv *). Хранение глобальной переменной для (JNIEnv *), по-видимому, не будет работать? ...
Что делает # # (двойной хэш) в директиве препроцессора?
#define DEFINE_STAT(Stat) struct FThreadSafeStaticStat<FStat_##Stat> StatPtr_##Stat; приведенная выше строка взята из Unreal 4, и я знаю, что могу задать ее на нереальных форумах, но я думаю, что это общий вопрос C++, который заслуживает того, чтобы его задавали здесь. Я понимаю, что первая строка определяет макрос, однако я не очень хорошо разбираюсь в препроцессорных махинациях в C++, и поэтому я потерялся там. Логика говорит мне, что обратная косая черта означает, что объявление пр ...
Преобразование int в 4-байтовый массив символов (C)
Эй, я ищу, чтобы преобразовать int, который вводится Пользователем в 4 байта, что я присваиваю массив символов. Как это можно сделать? пример: преобразование пользовательских входов 175 в 00000000 00000000 00000000 10101111 проблема со всеми ответами до сих пор, преобразование 255 должно привести к 0 0 0 ff хотя он печатает как:0 0 0 ffffffff unsigned int value = 255; buffer[0] = (value >> 24) & 0xFF; buffer[1] = (value >> 16) & 0xFF; buffer[2] = (value >> 8) ...
Как прочитать содержимое файла в строку в C?
каков самый простой способ (наименее подверженный ошибкам, наименьшие строки кода, однако вы хотите его интерпретировать) открыть файл в C и прочитать его содержимое в строку (char*, char[], что угодно)? ...
atol () v / s. strtol()
в чем разница между atol() & strtol()? согласно их man-страницам, они, похоже, имеют тот же эффект, что и соответствующие аргументы: long atol(const char *nptr); long int strtol(const char *nptr, char **endptr, int base); в обобщенном случае, когда я не хочу использовать base аргумент (у меня просто десятичные числа), какую функцию я должен использовать? ...
Как определить LLVM и его версию с помощью директив #define?
вопрос вполне понятен, я думаю. Я пытаюсь написать заголовок обнаружения компилятора, чтобы иметь возможность включать в приложение информацию о том, какой компилятор был использован и какая версия. это часть кода, который я использую: /* GNU C Compiler Detection */ #elif defined __GNUC__ #ifdef __MINGW32__ #define COMPILER "MinGW GCC %d.%d.%d" #else #define COMPILER "GCC %d.%d.%d" #endif #define COMP_VERSION __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ #endif ...
В чем разница между sscanf или atoi для преобразования строки в целое число?
gcc 4.4.4 c89 что лучше преобразовать строку в целочисленное значение. Я пробовал 2 различных метода atoi и sscanf. Оба работают, как и ожидалось. char digits[3] = "34"; int device_num = 0; if(sscanf(digits, "%d", &device_num) == EOF) { fprintf(stderr, "WARNING: Incorrect value for devicen"); return FALSE; } или с помощью atoi device_num = atoi(digits); Я думал, что sscanf будет лучше, как вы можете проверить на наличие ошибок. Однако atoi не делает никаких проверок. ...
Отличается ли динамическое выделение памяти в C и C++ в популярных реализациях?
что касается соответствующих языковых стандартов, C предлагает динамическое выделение памяти только через malloc() семья, в то время как в C++ наиболее распространенная форма выделения выполняется ::operator new(). C-style malloc также доступен на C++, и многие примеры "первого распределителя ребенка" используют его в качестве основной функции распределения, но мне любопытно, как современные компиляторы реализуют фактический оператор производства-новый. это просто тонкая обертка вокруг malloc() ...
Корректность алгоритма Сакамото для нахождения дня недели
Я использую алгоритм Сакамото, чтобы узнать день недели от указанной даты. Может кто-нибудь сказать мне правильность этого алгоритма? Я просто хочу, чтобы это было с 2000 по 2099 год. алгоритм Википедия дана для справки. int dow(int y, int m, int d) { static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}; y -= m < 3; return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7; } ...
Зачем использовать hex?
Эй! Я смотрел на этот код в http://www.gnu.org/software/m68hc11/examples/primes_8c-source.html Я заметил, что в некоторых ситуациях они использовали шестнадцатеричные числа, как в строке 134: for (j = 1; val && j <= 0x80; j <<= 1, q++) теперь зачем им использовать 0x80? Я не так хорош с hex, но я нашел онлайн-hex для decimal, и он дал мне 128 для 0x80. также перед строкой 134, на строке 114 они имеют это: small_n = (n & 0xffff0000) == 0; шестнадцатеричный десятичный ...
Как подсчитать символы в строке юникода в C
допустим у меня есть строка: char theString[] = "你们好āa"; учитывая, что моя кодировка utf-8, эта строка имеет длину 12 байт (три символа hanzi-три байта каждый, латинский символ с Макроном-два байта, а " a " - один байт: strlen(theString) == 12 как я могу подсчитать количество символов? Как я могу сделать эквивалент подписки, чтобы: theString[3] == "好" как я могу нарезать, и кошка такие строки? ...
Как отобразить индикатор выполнения в чистом C / C++ (cout/printf)?
Я пишу консольную программу на C++ для загрузки большого файла. Я знаю размер файла, и я начинаю рабочий поток для загрузки. Я хочу показать индикатор прогресса, чтобы он выглядел круче. Как отображать разные строки в разное время, но в одной и той же позиции, в cout или printf? ...