«c» etiketlenmiş sorular

C, sistem programlama (OS ve gömülü), kütüphaneler, oyunlar ve çapraz platform için kullanılan genel amaçlı bir programlama dilidir. Bu etiket, ISO 9899 standardında tanımlandığı gibi C dili ile ilgili genel sorularla kullanılmalıdır (aksi belirtilmedikçe en son sürüm 9899: 2018 - c89, c99, c11 vb. İle sürüme özgü istekleri de etiketleyin). C, C ++ 'dan farklıdır ve rasyonel bir nedenden yoksun C ++ etiketi ile birleştirilmemelidir.

15
Strtok () dizeyi C'deki belirteçlere nasıl böler?
Lütfen bana strtok()fonksiyonun çalışmasını açıklayın . Kılavuz, dizeyi jetonlara böldüğünü söylüyor. Kılavuzdan gerçekte ne yaptığını anlayamıyorum. Saatler ekledim strve *pchilk döngü oluştuğunda çalışıp çalışmadığını kontrol etmek için içeriği strsadece "bu" idi. Aşağıda gösterilen çıktı ekrana nasıl yazdırıldı? /* strtok example */ #include <stdio.h> #include <string.h> int main () { char …
114 c  string  split  token  strtok 


7
Vmalloc ve kmalloc arasındaki fark nedir?
Etrafta dolaştım ve kmallocbitişik fiziksel bellek blokları elde edeceğiniz garantili olduğundan, çoğu insanın kullanımını savunan buldum . Bununla birlikte, istediğiniz kmallocbitişik bir fiziksel blok bulunamazsa başarısız olabilir gibi görünüyor . Bitişik bir bellek bloğuna sahip olmanın avantajları nelerdir? Özellikle, neden bir sistem çağrısında bitişik fiziksel bellek bloğuna ihtiyacım olsun ki …

4
Boşluklu sol yastık baskısı
Printf'i kullanırken bir dizeyi solda boşluklarla nasıl doldurabilirim? Örneğin, önünde 40 boşluk olacak şekilde "Merhaba" yazmak istiyorum. Ayrıca yazdırmak istediğim dize birden çok satırdan oluşuyor. Her satırı ayrı ayrı yazdırmam gerekir mi? DÜZENLEME: Açık olmak gerekirse, her satırdan önce tam olarak 40 boşluk basılmasını istiyorum.
114 c  formatting  printf 


5
GDB bozuk yığın çerçevesi - Nasıl hata ayıklanır?
Aşağıdaki yığın izlemesine sahibim. Bundan hata ayıklama için yararlı bir şey çıkarmak mümkün mü? 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 …
113 c  recursion  gdb 

7
C99 stdint.h başlığı ve MS Visual Studio
Şaşırtıcı bir şekilde, C99 stdint.h dosyasının MS Visual Studio 2003'ten itibaren eksik olduğunu keşfettim. Eminim sebepleri vardır, ancak bir kopyasını nereden indirebileceğimi bilen var mı? Bu başlık olmadan uint32_t, vb. Gibi yararlı türler için tanımım yok.
113 c++  c  visual-studio  c99 

9
İs 'int main;' geçerli bir C / C ++ programı?
Soruyorum çünkü derleyicim öyle düşünüyor gibi görünüyor, ben düşünmüyorum. echo 'int main;' | cc -x c - -Wall echo 'int main;' | c++ -x c++ - -Wall Clang bununla ilgili hiçbir uyarı veya hata vermez ve gcc yalnızca uysal uyarıyı verir: 'main' is usually a function [-Wmain]ancak yalnızca C olarak …
113 c++  c  function  main  entry-point 


10
Ücretsiz (ptr) nerede ptr BOŞ bellek bozuk mu?
Teorik olarak şunu söyleyebilirim free(ptr); free(ptr); Zaten serbest bırakılan belleği boşalttığımız için bir bellek bozulmasıdır. Ama ya eğer free(ptr); ptr=NULL; free(ptr); İşletim sistemi tanımlanmamış bir şekilde davranacağından, neler olduğuna dair bunun için gerçek bir teorik analiz elde edemiyorum. Ne yaparsam yapayım, bu bellek bozulması mı, değil mi? NULL işaretçisi serbest …

9
Kullanılmayan dönüş değerleri neden boşa dönüştürülür?
int fn(); void whatever() { (void) fn(); } Kullanılmayan bir dönüş değerini geçersiz hale getirmek için herhangi bir neden var mı, yoksa bunun tam bir zaman kaybı olduğunu düşünmekte haklı mıyım? Takip et: Bu oldukça kapsamlı görünüyor. Kendi kendini belgeleyen kod yorumlardan daha iyi olduğundan, kullanılmayan bir dönüş değerini yorumlamaktan …
112 c++  c  void 


19
#ifdef vs #if - kodun belirli bölümlerinin derlenmesini etkinleştirmek / devre dışı bırakmak için bir yöntem olarak hangisi daha iyi / daha güvenli?
Bu bir tarz meselesi olabilir, ancak geliştirme ekibimizde bir miktar bölünme var ve bu konuda başka birinin fikri olup olmadığını merak ettim ... Temel olarak, normal geliştirme sırasında kapattığımız bazı hata ayıklama yazdırma ifadelerimiz var. Şahsen şunları yapmayı tercih ederim: //---- SomeSourceFile.cpp ---- #define DEBUG_ENABLED (0) ... SomeFunction() { int …

5
PATH_MAX Linux'ta nerede tanımlanır?
#includeBir dizeyi boyutlandırmak için bir int olarak PATH_MAX'ı kullanabilmek için hangi başlık dosyasını çağırmalıyım? Beyan edebilmek istiyorum: char *current_path[PATH_MAX]; Ancak bunu yaptığımda derleyicim (Linux'ta Clang / LLVM) aşağıdaki hatayı veriyor: recursive_find6.c:29:20: error: use of undeclared identifier 'PATH_MAX' char *current_path[PATH_MAX]; ^ Google araması yapmayı denedim ama yine de şansım yok. #include …
112 c  linux  gcc  include  clang 


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.