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


Чтение строки с помощью scanf

Я немного запутался в чем-то. У меня сложилось впечатление, что правильный способ чтения строки C с scanf() пошел по линии (не обращайте внимания на возможное переполнение буфера, это просто пример) char string[256]; scanf( "%s" , string ); однако, следующее, кажется, тоже работает, scanf( "%s" , &string ); это просто мой компилятор (gcc), чистая удача, или что-то еще? ...

Разбить строку с разделителями в C

Как написать функцию для разделения и возврата массива для строки с разделителями на языке программирования C? char* str = "JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC"; str_split(str,','); ...

Что такое нормализованный UTF-8?

The проект ICU (который также теперь имеет PHP библиотека) содержит классы, необходимые для нормализации строк UTF-8, чтобы упростить сравнение значений при поиске. однако, я пытаюсь выяснить что это значит для приложений. Например, в каких случаях я хочу "каноническую эквивалентность" вместо "эквивалентности совместимости" или наоборот? ...

В C++, я плачу за то, что я не ем? [дубликат]

этот вопрос уже есть ответ здесь: Включение iostream приводит к различным двоичным 2 ответы давайте рассмотрим следующие примеры hello world в C и c++: main.c #include <stdio.h> int main() { printf("Hello worldn"); return 0; } main.cpp #include <iostream> int main() { std::cout<<"Hello world"<<std::endl; return 0; } когда я компилирую их в godbolt для сбо ...

Как сделать лязгом компиляции в промежуточный код LLVM ИК

Я хочу, чтобы clang скомпилировал мой C/C++ код LLVM байт-код, а не двоичный исполняемый файл. Как я могу этого достичь? И если я получу LLVM байт-код, как я могу взять его для дальнейшей компиляции в двоичный исполняемый файл. в основном я хочу добавить свой собственный код в LLVM байт-код перед компиляцией в двоичный исполняемый файл. ...

Какой смысл делать while (0), когда мы определяем макрос? [дубликат]

Возможные Дубликаты:операторы Do-While и if-else в макросах C / C++ Я читаю ядро linux, и я нашел много макросов, как это: #define INIT_LIST_HEAD(ptr) do { (ptr)->next = (ptr); (ptr)->prev = (ptr); } while (0) почему они используют это, а не просто определить его в {}? ...

Почему нулевой адрес используется для нулевого указателя?

в C (или C++, если на то пошло) указатели являются особыми, если они имеют нулевое значение: мне рекомендуется установить указатели на ноль после освобождения их памяти, потому что это означает, что освобождение указателя снова не опасно; когда я вызываю malloc, он возвращает указатель со значением ноль, если он не может получить мне память; я использую if (p != 0) все время, чтобы убедиться, что переданные указатели действительны и т. д. но поскольку адресация памяти начинается с 0, разве 0 не ...

В чем разница между информацией и сигналом?

Я собирался добавить дополнительный обработчик сигнала в приложение, которое мы имеем здесь, и я заметил, что автор использовал sigaction для настройки других обработчиков сигналов. Я собирался использовать сигнал. Чтобы следовать конвенции, я должен использовать sigaction, но если я писал с нуля, что я должен выбрать? ...

DEBUG vs NDEBUG

какой препроцессор следует использовать для указания отладочных разделов кода? использовать #ifdef _DEBUG или #ifndef NDEBUG или есть ли лучший способ сделать это, например,#define MY_DEBUG? Я думаю _DEBUG - это конкретные визуальные студии, NDEBUG стандарт? ...

Почему pthread cond wait имеет ложные пробуждения?

чтобы процитировать man-страницу: при использовании переменных условий всегда существует логический предикат, включающий общие переменные, связанные с каждым условием wait, которое истинно, если поток должен продолжаться. Могут возникать ложные пробуждения из функций pthread_cond_timedwait() или pthread_cond_wait (). Поскольку возврат из pthread_cond_timedwait() или pthread_cond_wait() ничего не означает о значении этого предиката, предикат должен быть повторно оценен после такого возвращени ...

Где в памяти хранятся мои переменные в C?

Я думаю, что они будут распределены следующим образом: глобальные переменные -------> сведения статические переменные ------- >данные постоянные типы данных - - - - - > код локальные переменные (объявленные и определенные в функциях) --------> стек переменные, объявленные и определенные в основной функции - - - - - > куча указатели (например, char *arr,int *arr) -------> кучи динамически выделенное пространство (с помощью malloc и calloc) --------> стек Я имею в виду эт ...

Как именно работает хвостовая рекурсия?

я почти понимаю, как работает хвостовая рекурсия и разница между ней и нормальной рекурсией. Я только не понимаю, почему это не требуется стек, чтобы помнить свой обратный адрес. // tail recursion int fac_times (int n, int acc) { if (n == 0) return acc; else return fac_times(n - 1, acc * n); } int factorial (int n) { return fac_times (n, 1); } // normal recursion int factorial (int n) { if (n == 0) return 1; else return n * factorial(n - 1); } после вызова самой функции ...

Зачем нам нужен argc, когда в конце argv всегда есть null?

кажется,argv[argc] всегда NULL, поэтому я думаю, что мы можем пройти список аргументов без argc. Один while цикл будет этого делать. если есть NULL в конце argv, зачем нужен argc? ...

Какой из них будет выполняться быстрее, если (флаг==0) или if (0==флаг)?

вопрос интервью: Какой из них будет выполняться быстрее,if (flag==0) или if (0==flag)? Зачем? ...

Является ли’ int main; ' допустимой программой на C / C++?

Я спрашиваю, потому что мой компилятор, кажется, так думает, хотя я этого не делаю. echo 'int main;' | cc -x c - -Wallecho 'int main;' | c++ -x c++ - -Wall Clang не выдает никаких предупреждений или ошибок с этим, и gcc выдает только кроткое предупреждение:'main' is usually a function [-Wmain], но только при компиляции как C. указание a -std= не имеет значения. в противном случае, он компилируется и ссылки нормально. Но при исполнении он немедленно завершается с SIGBUS (для меня). чтение (о ...

В чем преимущество встроенных в GCC ожиданий, если еще заявления?

я наткнулся на #define в котором они использовать __builtin_expect. документация говорит: встроенные функции: long __builtin_expect (long exp, long c) вы можете использовать __builtin_expect чтобы предоставить компилятору ветку прогнозная информация. В общем, вы должны предпочесть использовать фактические профиль обратной связи для этого (-fprofile-arcs), как программисты как известно, плохо предсказывает, как их программы На самом деле работают. Тем не менее, есть приложения ...

Как вы разрешаете вводить пробелы с помощью scanf? [дубликат]

этот вопрос уже есть ответ здесь: читает строку из ввода с пробелом? 14 ответов использовать следующий код: char *name = malloc(sizeof(char) + 256); printf("What is your name? "); scanf("%s", name); printf("Hello %s. Nice to meet you.n", name); пользователь может ввести свое имя, но когда они введите имя с пробелом, как Lucas Aardvark,scanf() просто отрезает все после Lucas. Как сделать scanf() ра ...

C99 stdint.H заголовок и MS Visual Studio

к моему удивлению, я только что обнаружил, что C99 stdint.h отсутствует в MS Visual Studio 2003 вверх. Я уверен, что у них есть свои причины, но кто-нибудь знает где я могу скачать копию? Без этого заголовка у меня нет определений для полезных типов, таких как uint32_t и т. д. ...

Будет ли strlen вычисляться несколько раз при использовании в состоянии цикла?

Я не уверен, что следующий код может вызвать избыточные вычисления, или это зависит от компилятора? for (int i = 0; i < strlen(ss); ++i) { // blabla } будет strlen() вычисляется каждый раз, когда i увеличивается? ...

Возврат массива с помощью C

Я относительно новичок в C и мне нужна помощь с методами работы с массивами. Исходя из программирования Java, я привык к тому, что могу сказать int [] method()для того, чтобы возвратить массив. Однако я обнаружил, что с C вы должны использовать указатели для массивов, когда вы их возвращаете. Будучи новым программистом, я действительно не понимаю этого вообще, даже со многими форумами, которые я просматривал. В принципе, я пытаюсь написать метод, который возвращает массив символов в C. Я буду ...