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

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

11
Как разрешить ввод пробелов с помощью scanf?
Используя следующий код: 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()разрешенные пробелы
129 c  string  printf  scanf  whitespace 

9
Когда и почему компилятор инициализирует память до 0xCD, 0xDD и т. Д. В malloc / free / new / delete?
Я знаю, что компилятор иногда инициализирует память определенными шаблонами, такими как 0xCDи 0xDD. Я хочу знать, когда и почему это происходит. когда Это специфично для используемого компилятора? Так поступают malloc/newи free/deleteработают в этом отношении? Это зависит от платформы? Произойдет ли это в других операционных системах, например Linuxили VxWorks? Зачем Насколько …

4
Почему sizeof (my_arr) [0] компилируется и равен sizeof (my_arr [0])?
Почему этот код компилируется? _Static uint32_t my_arr[2]; _Static_assert(sizeof(my_arr) == 8, ""); _Static_assert(sizeof(my_arr[0]) == 4, ""); _Static_assert(sizeof(my_arr)[0] == 4, ""); Первые 2 утверждения, очевидно, верны, но я ожидал, что последняя строка не удастся, поскольку я понимаю, что она sizeof()должна оцениваться как целочисленный литерал, который нельзя рассматривать как массив. Другими словами, произойдет …
129 c  sizeof 

11
Заставить GDB сохранить список точек останова
Хорошо, info break перечисляет точки останова, но не в формате, который бы хорошо работал с их повторным использованием с помощью команды --command, как в этом вопросе . Есть ли у GDB способ снова сбросить их в файл, приемлемый для ввода? Иногда в сеансе отладки необходимо перезапустить GDB после создания набора …
129 c++  c  debugging  gdb  breakpoints 

6
Насколько большим должен быть мой буфер recv при вызове recv в библиотеке сокетов
У меня есть несколько вопросов о библиотеке сокетов в C. Вот фрагмент кода, на который я буду ссылаться в своих вопросах. char recv_buffer[3000]; recv(socket, recv_buffer, 3000, 0); Как мне решить, насколько большим сделать recv_buffer? Я использую 3000, но это произвольно. что произойдет, если recv()получит пакет больше моего буфера? как я …
129 c  sockets  buffer  recv 

3
Как программа ниже выводит C89 при компиляции в режиме C89 и C99 при компиляции в режиме C99?
Я нашел эту программу C в сети: #include <stdio.h> int main(){ printf("C%d\n",(int)(90-(-4.5//**/ -4.5))); return 0; } В этой программе интересно то, что когда она компилируется и запускается в режиме C89, она печатает, C89а когда она компилируется и запускается в режиме C99, она печатает C99. Но я не могу понять, как …
128 c  printf  comments  c99  c89 

12
Возможно ли скомпилировать Python в машинный код?
Насколько возможно было бы скомпилировать Python (возможно, через промежуточное представление C) в машинный код? Предположительно, это должно быть связано с библиотекой времени выполнения Python, и любые части стандартной библиотеки Python, которые сами являются Python, также должны быть скомпилированы (и связаны). Кроме того, вам потребуется связать интерпретатор Python, если вы хотите …
128 python  c  linker  compilation 

30
Как преобразовать переменную типа enum в строку?
Как заставить printf показывать значения переменных перечислимого типа? Например: typedef enum {Linux, Apple, Windows} OS_type; OS_type myOS = Linux; и мне нужно что-то вроде printenum(OS_type, "My OS is %s", myOS); который должен отображать строку «Linux», а не целое число. Полагаю, сначала мне нужно создать массив строк с индексированием значений. Но …
128 c++  c  preprocessor  ansi-c 

10
Выражения-указатели: * ptr ++, * ++ ptr и ++ * ptr
Недавно я столкнулся с этой проблемой, которую сам не могу понять. Что ДЕЙСТВИТЕЛЬНО означают эти три выражения ? *ptr++ *++ptr ++*ptr Я пробовал Ричи. Но, к сожалению, не смог уследить за тем, что он рассказал об этих трех операциях. Я знаю, что все они выполняются для увеличения указателя / значения, …
128 c++  c  pointers  increment 

7
Что произойдет, если я определю массив нулевого размера в C / C ++?
Просто любопытно, что на самом деле произойдет, если я определю int array[0];в коде массив нулевой длины ? GCC вообще не жалуется. Пример программы #include <stdio.h> int main() { int arr[0]; return 0; } осветление На самом деле я пытаюсь выяснить, оптимизированы ли массивы нулевой длины, инициализированные таким образом, вместо того, …
127 c++  c  arrays 

3
Допустимы ли параллельные вызовы send / recv на одном и том же сокете?
Можем ли мы вызвать send из одного потока и recv из другого в том же сокете? Можно ли вызывать несколько отправок одновременно из разных потоков в одном сокете? Я знаю, что хороший дизайн должен избегать этого, но я не понимаю, как эти системные API-интерфейсы будут себя вести. Я не могу …
127 c  networking  sockets 

5
Python (и Python C API): __new__ против __init__
Вопрос, который я собираюсь задать, похоже, повторяет использование Python __new__ и __init__? , но, тем не менее, мне все еще неясно, в чем практическая разница между __new__и __init__. Прежде чем вы поспешите сказать мне, что __new__это предназначено для создания объектов и __init__для инициализации объектов, позвольте мне пояснить: я понимаю. Фактически, …
127 python  c  python-c-api 

8
Есть ли способ указать, сколько символов строки нужно распечатать с помощью printf ()?
Есть ли способ указать, сколько символов строки нужно распечатать (аналогично десятичным разрядам в ints)? printf ("Here are the first 8 chars: %s\n", "A string that is more than 8 chars"); Хотел бы распечатать: Here are the first 8 chars: A string
127 c++  c  printf 


4
Какая польза от _start () в C?
Я узнал от своего коллеги, что можно написать и выполнить программу на C, не написав main()функции. Сделать это можно так: my_main.c /* Compile this with gcc -nostartfiles */ #include <stdlib.h> void _start() { int ret = my_main(); exit(ret); } int my_main() { puts("This is a program without a main() function!"); …
127 c 

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