Pytania otagowane jako c

C jest językiem programowania ogólnego przeznaczenia używanym do programowania systemu (system operacyjny i wbudowane), bibliotek, gier i platform. Tego znacznika należy używać z ogólnymi pytaniami dotyczącymi języka C, zgodnie z definicją w normie ISO 9899 (najnowsza wersja, 9899: 2018, o ile nie określono inaczej - także znaczniki specyficzne dla wersji za pomocą c89, c99, c11 itd.). C różni się od C ++ i nie należy go łączyć ze znacznikiem C ++ bez uzasadnionego powodu.

15
W jaki sposób strtok () dzieli ciąg na tokeny w C?
Proszę wyjaśnij mi działanie strtok()funkcji. Instrukcja mówi, że dzieli ciąg na tokeny. Nie jestem w stanie zrozumieć na podstawie instrukcji, co to właściwie robi. Dodałem zegarki włączone stri *pchżeby sprawdzić jak działa, kiedy pojawiła się pierwsza pętla while, zawartość strbyła tylko "ta". W jaki sposób wyniki pokazane poniżej zostały wydrukowane …
114 c  string  split  token  strtok 


4
Druk z lewej strony ze spacjami
Jak mogę wypełnić ciąg spacjami po lewej stronie, używając printf? Na przykład chcę wydrukować „Hello” z 40 spacjami przed nim. Ponadto ciąg, który chcę wydrukować, składa się z wielu wierszy. Czy muszę drukować każdą linię osobno? EDYCJA: Żeby było jasne, chcę wydrukować dokładnie 40 spacji przed każdym wierszem.
114 c  formatting  printf 


5
Uszkodzona ramka stosu GDB - jak debugować?
Mam następujący ślad stosu. Czy można wyciągnąć z tego cokolwiek przydatnego do debugowania? Program received signal SIGSEGV, Segmentation fault. 0x00000002 in ?? () (gdb) bt #0 0x00000002 in ?? () #1 0x00000001 in ?? () #2 0xbffff284 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) …
113 c  recursion  gdb 

7
Nagłówek C99 stdint.h i MS Visual Studio
Ku mojemu zdumieniu właśnie odkryłem, że od wersji MS Visual Studio 2003 w górę brakuje C99 stdint.h. Jestem pewien, że mają swoje powody, ale czy ktoś wie, skąd mogę pobrać kopię? Bez tego nagłówka nie mam definicji przydatnych typów, takich jak uint32_t itp.
113 c++  c  visual-studio  c99 

9
Czy „int main”; poprawny program C / C ++?
Pytam, ponieważ wydaje się, że mój kompilator tak myśli, chociaż ja nie. echo 'int main;' | cc -x c - -Wall echo 'int main;' | c++ -x c++ - -Wall Clang nie wyświetla żadnego ostrzeżenia ani błędu, a gcc wydaje tylko łagodne ostrzeżenie:, 'main' is usually a function [-Wmain]ale tylko …
113 c++  c  function  main  entry-point 

7
Jaka jest różnica między vmalloc i kmalloc?
Przeszukałem go i zauważyłem, że większość ludzi opowiada się za używaniem kmalloc, ponieważ masz gwarancję, że otrzymasz ciągłe fizyczne bloki pamięci. Jednak wydaje się również, że kmallocmoże się nie powieść, jeśli nie można znaleźć ciągłego fizycznego bloku, którego chcesz. Jakie są zalety posiadania ciągłego bloku pamięci? W szczególności, dlaczego miałbym …


10
Czy free (ptr), gdzie ptr to NULL uszkodzona pamięć?
Teoretycznie mogę to powiedzieć free(ptr); free(ptr); to uszkodzenie pamięci, ponieważ zwalniamy pamięć, która została już zwolniona. Ale co gdyby free(ptr); ptr=NULL; free(ptr); Ponieważ system operacyjny będzie zachowywał się w nieokreślony sposób, nie mogę uzyskać faktycznej teoretycznej analizy tego, co się dzieje. Cokolwiek robię, czy to uszkodzenie pamięci, czy nie? Czy …

9
Po co rzutować nieużywane wartości zwracane na void?
int fn(); void whatever() { (void) fn(); } Czy istnieje jakiś powód, aby rzutować nieużywaną wartość zwracaną na void, czy też mam rację, myśląc, że to kompletna strata czasu? Zagryźć: Cóż, wydaje się to dość wyczerpujące. Przypuszczam, że jest to lepsze niż komentowanie nieużywanej wartości zwracanej, ponieważ samodokumentujący kod jest …
112 c++  c  void 


19
#ifdef vs #if - co jest lepsze / bezpieczniejsze jako metoda włączania / wyłączania kompilacji poszczególnych sekcji kodu?
To może być kwestia stylu, ale w naszym zespole deweloperów jest trochę podziałów i zastanawiałem się, czy ktoś inny ma jakieś pomysły w tej sprawie ... Zasadniczo mamy kilka instrukcji debugowania print, które wyłączamy podczas normalnego programowania. Osobiście wolę wykonać następujące czynności: //---- SomeSourceFile.cpp ---- #define DEBUG_ENABLED (0) ... SomeFunction() …

5
Gdzie zdefiniowano PATH_MAX w systemie Linux?
Który plik nagłówkowy powinienem wywołać, #includeaby móc używać PATH_MAX jako int do określania rozmiaru ciągu? Chcę móc zadeklarować: char *current_path[PATH_MAX]; Ale kiedy to robię, mój kompilator (Clang / LLVM w systemie Linux) wyświetla następujący błąd: recursive_find6.c:29:20: error: use of undeclared identifier 'PATH_MAX' char *current_path[PATH_MAX]; ^ Próbowałem przeprowadzić wyszukiwanie w Google, …
112 c  linux  gcc  include  clang 


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.