คำถามติดแท็ก c

C เป็นภาษาโปรแกรมทั่วไปที่ใช้สำหรับการเขียนโปรแกรมระบบ (ระบบปฏิบัติการและฝังตัว), ห้องสมุด, เกมและข้ามแพลตฟอร์ม แท็กนี้ควรใช้กับคำถามทั่วไปที่เกี่ยวข้องกับภาษา C ตามที่กำหนดไว้ในมาตรฐาน ISO 9899 (เวอร์ชันล่าสุด 9899: 2018 เว้นแต่ระบุไว้เป็นอย่างอื่น - นอกจากนี้ยังติดแท็กคำขอเฉพาะรุ่นด้วย c89, c99, c11 ฯลฯ ) C แตกต่างจาก C ++ และไม่ควรใช้ร่วมกับแท็ก C ++ หากไม่มีเหตุผล

12
วิธีการแปลงสตริงเป็นจำนวนเต็มใน C?
ฉันพยายามค้นหาว่ามีวิธีอื่นในการแปลงสตริงเป็นจำนวนเต็มใน C หรือไม่ ฉันทำรูปแบบต่อไปนี้เป็นประจำในรหัสของฉัน char s[] = "45"; int num = atoi(s); ดังนั้นจะมีวิธีที่ดีกว่าหรืออีกวิธีหนึ่งหรือไม่
260 c  string  atoi 

10
วิธีป้องกัน SIGPIPE (หรือจัดการอย่างถูกต้อง)
ฉันมีโปรแกรมเซิร์ฟเวอร์ขนาดเล็กที่ยอมรับการเชื่อมต่อบนซ็อกเก็ต TCP หรือ UNIX ในพื้นที่อ่านคำสั่งง่าย ๆ และส่งคำตอบกลับขึ้นอยู่กับคำสั่ง ปัญหาคือไคลเอนต์อาจไม่สนใจคำตอบในบางครั้งและออกก่อนเวลาดังนั้นการเขียนลงในซ็อกเก็ตนั้นจะทำให้เกิด SIGPIPE และทำให้เซิร์ฟเวอร์ของฉันทำงานล้มเหลว การปฏิบัติที่ดีที่สุดในการป้องกันความผิดพลาดคืออะไร มีวิธีการตรวจสอบว่าอีกด้านของบรรทัดยังอ่านอยู่หรือไม่? (select () ดูเหมือนจะไม่ทำงานที่นี่เพราะมันบอกว่าซ็อกเก็ตเขียนได้เสมอ) หรือฉันควรจับ SIGPIPE ด้วยเครื่องจัดการและเพิกเฉย?
260 c  io  signals  broken-pipe  sigpipe 

12
การใช้ตัวดำเนินการลูกศร (->) ใน C
ฉันกำลังอ่านหนังสือที่ชื่อว่า "Teach Yourself C in 21 Days" (ฉันได้เรียนรู้ Java และ C # แล้วดังนั้นฉันจึงเคลื่อนไหวได้เร็วขึ้นมาก) ผมอ่านบทที่เกี่ยวกับตัวชี้และ->(ลูกศร) ประกอบขึ้นมาโดยไม่มีคำอธิบาย ฉันคิดว่ามันถูกใช้เพื่อเรียกสมาชิกและฟังก์ชั่น (เช่นเทียบเท่าของตัวดำเนินการ.(dot) แต่สำหรับตัวชี้แทนสมาชิก) แต่ฉันไม่แน่ใจทั้งหมด ฉันขอคำอธิบายและตัวอย่างโค้ดได้ไหม
257 c  pointers  syntax 

3
ทำไม malloc + memset ช้ากว่า calloc
เป็นที่รู้จักกันว่าcallocแตกต่างจากmallocที่เริ่มต้นการจัดสรรหน่วยความจำ ด้วยcallocหน่วยความจำถูกตั้งค่าเป็นศูนย์ ด้วยmallocหน่วยความจำจะไม่ถูกล้างออก ดังนั้นในการทำงานในชีวิตประจำวันผมถือว่าcallocเป็น+malloc memsetบังเอิญเพื่อความสนุกฉันได้เขียนโค้ดต่อไปนี้เพื่อเป็นเกณฑ์มาตรฐาน ผลที่ได้คือความสับสน รหัส 1: #include<stdio.h> #include<stdlib.h> #define BLOCK_SIZE 1024*1024*256 int main() { int i=0; char *buf[10]; while(i<10) { buf[i] = (char*)calloc(1,BLOCK_SIZE); i++; } } ผลลัพธ์ของรหัส 1: time ./a.out **real 0m0.287s** user 0m0.095s sys 0m0.192s รหัส 2: #include<stdio.h> #include<stdlib.h> #include<string.h> #define BLOCK_SIZE 1024*1024*256 int main() { int …
256 c  malloc 

10
ใช้ GCC เพื่อสร้างชุดประกอบที่อ่านได้หรือไม่
ฉันสงสัยว่าจะใช้GCCในไฟล์ต้นฉบับ C ของฉันเพื่อถ่ายโอนรหัสเครื่องช่วยจำรุ่นใดเพื่อที่ฉันจะได้เห็นว่าโค้ดของฉันรวบรวมอะไร คุณสามารถทำได้ด้วย Java แต่ฉันไม่สามารถหาวิธีที่มี GCC ฉันกำลังพยายามเขียนวิธี C อีกครั้งในการชุมนุมและดูว่า GCC ทำมันได้อย่างไรจะช่วยได้มาก
256 c  gcc  assembly 

15
วัตถุประสงค์ของสหภาพใน C และ C ++
ก่อนหน้านี้ฉันใช้สหภาพอย่างสะดวกสบาย วันนี้ฉันตื่นตระหนกเมื่อฉันอ่านโพสต์นี้และรู้ว่ารหัสนี้ union ARGB { uint32_t colour; struct componentsTag { uint8_t b; uint8_t g; uint8_t r; uint8_t a; } components; } pixel; pixel.colour = 0xff040201; // ARGB::colour is the active member from now on // somewhere down the line, without any edit to pixel if(pixel.components.a) // accessing the non-active member …
254 c++  c  unions  type-punning 

11
ทำไมคุณต้องลิงค์ห้องสมุดคณิตศาสตร์ใน C?
หากฉันรวม<stdlib.h>หรือ<stdio.h>อยู่ในโปรแกรม C ฉันไม่จำเป็นต้องเชื่อมโยงสิ่งเหล่านี้เมื่อรวบรวม แต่ฉันต้องเชื่อมโยงกับ<math.h>ใช้-lmกับ gcc ตัวอย่างเช่น: gcc test.c -o test -lm อะไรคือสาเหตุของสิ่งนี้? เหตุใดฉันจึงต้องเชื่อมโยงห้องสมุดคณิตศาสตร์อย่างชัดเจน แต่ไม่ใช่ห้องสมุดอื่น
254 c  compilation  math.h 


4
มีความแตกต่างระหว่าง foo (void) และ foo () ใน C ++ หรือ C หรือไม่
พิจารณานิยามฟังก์ชันทั้งสองนี้: void foo() { } void foo(void) { } มีความแตกต่างระหว่างสองคนนี้ไหม? ถ้าไม่เป็นเช่นนั้นทำไมจึงมีการvoidโต้แย้ง? เหตุผลด้านความงาม?
253 c++  c  arguments 

6
ทำไมเป็น 0 <-0x80000000
ฉันมีโปรแกรมง่ายๆด้านล่าง: #include &lt;stdio.h&gt; #define INT32_MIN (-0x80000000) int main(void) { long long bal = 0; if(bal &lt; INT32_MIN ) { printf("Failed!!!"); } else { printf("Success!!!"); } return 0; } เงื่อนไขif(bal &lt; INT32_MIN )เป็นจริงเสมอ มันเป็นไปได้ยังไงกัน? มันทำงานได้ดีถ้าฉันเปลี่ยนแมโครเป็น: #define INT32_MIN (-2147483648L) ใครสามารถชี้ให้เห็นปัญหา

10
{0} หมายถึงอะไรเมื่อเริ่มต้นวัตถุ
เมื่อ{0}ใช้ในการเริ่มต้นวัตถุมันหมายถึงอะไร? ฉันไม่สามารถหาการอ้างอิงใด ๆ ไปยัง{0}ที่ใดก็ได้และเนื่องจากการจัดฟันแบบปีกกาการค้นหาของ Google ไม่เป็นประโยชน์ รหัสตัวอย่าง: SHELLEXECUTEINFO sexi = {0}; // what does this do? sexi.cbSize = sizeof(SHELLEXECUTEINFO); sexi.hwnd = NULL; sexi.fMask = SEE_MASK_NOCLOSEPROCESS; sexi.lpFile = lpFile.c_str(); sexi.lpParameters = args; sexi.nShow = nShow; if(ShellExecuteEx(&amp;sexi)) { DWORD wait = WaitForSingleObject(sexi.hProcess, INFINITE); if(wait == WAIT_OBJECT_0) GetExitCodeProcess(sexi.hProcess, &amp;returnCode); } ก็ไม่มีรหัสข้างต้นจะผิดพลาดในการรันไทม์
252 c++  c 

9
ฉันจะจัดรูปแบบรหัส C อัตโนมัติ / เยื้องในกลุ่มได้อย่างไร?
เมื่อฉันคัดลอกโค้ดจากไฟล์อื่นการจัดรูปแบบจะเลอะเช่นนี้: fun() { for(...) { for(...) { if(...) { } } } } ฉันจะจัดรูปแบบอัตโนมัติของรหัสนี้เป็นกลุ่มได้อย่างไร
250 c  vim  code-formatting 

17
วิธีที่มีประสิทธิภาพมากที่สุดในการใช้ฟังก์ชั่นพลังงานแบบอิงจำนวนเต็ม pow (int, int)
อะไรคือวิธีที่มีประสิทธิภาพที่สุดในการเพิ่มจำนวนเต็มเป็นกำลังของจำนวนเต็มอื่นใน C? // 2^3 pow(2,3) == 8 // 5^5 pow(5,5) == 3125

22
C คำนวณบาป () และฟังก์ชันคณิตศาสตร์อื่น ๆ ได้อย่างไร
ฉันได้อ่านผ่านการแยกชิ้นส่วน. NET และซอร์สโค้ด GCC แต่ดูเหมือนไม่สามารถหาได้ทุกที่ที่การใช้งานจริงsin()และฟังก์ชั่นคณิตศาสตร์อื่น ๆ ... พวกเขาดูเหมือนจะอ้างถึงอย่างอื่นเสมอ ใครสามารถช่วยฉันหาพวกเขาได้บ้าง ฉันรู้สึกว่ามันไม่น่าเป็นไปได้ที่ฮาร์ดแวร์ทั้งหมดที่ C จะทำงานบนรองรับฟังก์ชั่นตรีโกณฯ ในฮาร์ดแวร์ดังนั้นจะต้องมีอัลกอริทึมซอฟต์แวร์ที่ไหนสักแห่งใช่ไหม? ฉันตระหนักถึงวิธีการหลายอย่างที่สามารถคำนวณฟังก์ชันได้และได้เขียนกิจวัตรของฉันเองเพื่อคำนวณฟังก์ชันโดยใช้ชุดเทย์เลอร์เพื่อความสนุกสนาน ฉันอยากรู้ว่าภาษาโปรดักชั่นทำจริงได้อย่างไรเนื่องจากการใช้งานของฉันทั้งหมดมักจะมีขนาดของคำสั่งช้ากว่าแม้ว่าฉันคิดว่าอัลกอริทึมของฉันค่อนข้างฉลาด
248 c  math  trigonometry 

28
ตัวแปรทั่วโลกแย่หรือเปล่า? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ใน C / C ++ ตัวแปรทั่วโลกไม่ดีเท่าที่อาจารย์คิด
247 c++  c  global-variables 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.