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

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

12
Як уникнути натискання клавіші Enter за допомогою getchar () для читання лише одного символу?
У наступному коді: #include <stdio.h> int main(void) { int c; while ((c=getchar())!= EOF) putchar(c); return 0; } Я повинен натиснути, Enterщоб надрукувати всі введені літери getchar, але я не хочу цього робити, я хочу натиснути на лист і негайно побачити лист, який я ввів, повторений без натискання Enter. Наприклад, якщо …

10
Заповнення рядків у C
Я написав цю функцію, яка повинна виконувати StringPadRight ("Привіт", 10, "0") -> "Hello00000". char *StringPadRight(char *string, int padded_len, char *pad) { int len = (int) strlen(string); if (len >= padded_len) { return string; } int i; for (i = 0; i < padded_len - len; i++) { strcat(string, pad); } …
80 c  string  padding 

4
Чи гарантовано безпечно виконувати memcpy (0,0,0)?
Я не настільки добре обізнаний із стандартом С, тож будьте ласкаві. Я хотів би знати, чи гарантовано це, за стандартом, memcpy(0,0,0)безпечно. Єдине обмеження, яке я міг знайти, полягає в тому, що якщо області пам'яті перекриваються, тоді поведінка невизначена ... Але чи можна вважати, що області пам'яті тут перекриваються?

7
Чому strlcpy і strlcat вважаються небезпечними?
Я розумію це strlcpyі strlcatбув розроблений як безпечна заміна для strncpyі strncat. Однак деякі люди досі дотримуються думки, що вони невпевнені в собі і просто спричиняють інший тип проблем . Чи може хтось навести приклад того, як використання strlcpyабо strlcat(тобто функції, яка завжди закінчує свої рядки нулем) може призвести до …
80 c  security  strncpy  strlcpy 

7
Чи слід використовувати exit () у C?
Є питання щодо використання exitв C ++. Відповідь обговорює, що це не є гарною ідеєю в основному через RAII, наприклад, якщо exitдесь викликається код, деструктори об'єктів не будуть викликані, отже, якщо, наприклад, деструктор мав на меті записати дані у файл, цього не трапиться , оскільки деструктор не викликався. Мене цікавило, …
80 c 

6
Роздрукуйте адресу або покажчик для значення в C
Я хочу зробити щось, що здається досить простим. Я отримую результати, але проблема в тому, що я не маю можливості дізнатися, чи є результати правильними. Я працюю на C і маю два покажчики; Я хочу надрукувати вміст покажчика. Я не хочу розіменовувати покажчик, щоб отримати значення, на яке вказують, я …

2
Спроба зрозуміти параметр gcc -fomit-frame-pointer
Я попросив Google надати мені значення gccпараметра -fomit-frame-pointer, який перенаправляє мене на наступне твердження. -fomit-frame-pointer Не зберігайте покажчик кадру в реєстрі функцій, які йому не потрібні. Це дозволяє уникнути інструкцій щодо збереження, налаштування та відновлення покажчиків фреймів; це також робить додатковий регістр доступним для багатьох функцій. Це також унеможливлює налагодження …


13
Як вирішити “операцію ptrace не дозволено” при спробі приєднати GDB до процесу?
Я намагаюся підключити програму за допомогою gdb, але вона повертає: Приєднання до процесу 29139 Не вдалося долучити до процесу. Якщо ваш uid відповідає uid цільового процесу, перевірте налаштування / proc / sys / kernel / yama / ptrace_scope або спробуйте ще раз як кореневий користувач. Детальніше див. У /etc/sysctl.d/10-ptrace.conf ptrace: …
80 c  linux  debugging  gdb  strace 

9
Це як реалізовано оператор + в C?
При розумінні того, як примітивні оператори , такі як +, -, *і /реалізуються в C, я знайшов такий уривок із листа цікавого відповіді . // replaces the + operator int add(int x, int y) { while(x) { int t = (x & y) <<1; y ^= x; x = t; …

16
Приклади хороших гото в C або C ++ [закрито]
Закрито . Це питання має бути більш сфокусованим . Наразі відповіді не приймаються. Закрито 6 років тому . Заблоковано . Це запитання та відповіді на нього заблоковані, оскільки це питання не стосується теми, але має історичне значення. Наразі він не приймає нових відповідей або взаємодій. У цій темі ми розглянемо …
79 c++  c  goto 

7
Чому тернарний оператор використовується для визначення 1 і 0 у макросі?
Я використовую SDK для вбудованого проекту. У цьому вихідному коді я знайшов якийсь код, який, принаймні, мені здався своєрідним. У багатьох місцях SDK є вихідний код у такому форматі: #define ATCI_IS_LOWER( alpha_char ) ( ( (alpha_char >= ATCI_char_a) && (alpha_char <= ATCI_char_z) ) ? 1 : 0 ) #define ATCI_IS_UPPER( …

9
Чому поділ за модулем (%) працює лише з цілими числами?
Нещодавно я зіткнувся з проблемою , яку легко можна було вирішити за допомогою поділу за модулем, але вхідним сигналом було плаваюче: Враховуючи періодичну функцію (наприклад sin) та комп’ютерну функцію, яка може обчислювати її лише в межах діапазону періодів (наприклад, [-π, π]), створіть функцію, яка може обробляти будь-який вхід. "Очевидне" рішення …
79 c++  c 

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

9
Як отримати 100% використання центрального процесора від програми C.
Це досить цікаве питання, тож дозвольте мені встановити сцену. Я працюю в Національному музеї обчислювальної техніки, і нам щойно вдалося придбати суперкомп’ютер Cray Y-MP EL з 1992 року, і ми справді хочемо побачити, як швидко він може йти! Ми вирішили, що найкращий спосіб зробити це - написати просту програму на …
79 c  windows  linux  performance  cray 

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