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

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

7
รีเซ็ต C int array เป็นศูนย์: วิธีที่เร็วที่สุด?
สมมติว่าเรามีT myarray[100]T = int, int ที่ไม่ได้ลงนาม, int ยาวหรือ int ยาวที่ไม่ได้ลงนามวิธีใดคือวิธีที่เร็วที่สุดในการรีเซ็ตเนื้อหาทั้งหมดเป็นศูนย์ (ไม่เพียง แต่สำหรับการเริ่มต้น แต่เพื่อรีเซ็ตเนื้อหาหลาย ๆ ครั้งในโปรแกรมของฉัน) เหรอ? อาจจะมี memset? คำถามเดียวกันสำหรับอาร์เรย์แบบไดนามิกเช่นT *myarray = new T[100].
102 c++  c  arrays  memset 


8
ฉันจะรับข้อมูลบิตต่อบิตจากค่าจำนวนเต็มใน C ได้อย่างไร
ฉันต้องการแยกบิตของตัวเลขทศนิยม ตัวอย่างเช่น 7 คือไบนารี 0111 และฉันต้องการรับ 0 1 1 1 บิตทั้งหมดที่เก็บไว้ในบูล ฉันจะทำเช่นนั้นได้อย่างไร? ตกลงการวนซ้ำไม่ใช่ตัวเลือกที่ดีฉันจะทำอย่างอื่นได้ไหม

5
อักขระหลีก "backspace" '\ b': พฤติกรรมที่ไม่คาดคิด?
ในที่สุดฉันก็อ่านK&Rและฉันได้เรียนรู้บางอย่างในสองสามหน้าแรกว่ามีอักขระหลีกย้อน\bกลับ ดังนั้นฉันไปทดสอบดูและมีพฤติกรรมแปลก ๆ : #include <stdio.h> main () { printf("hello worl\b\bd\n"); } ผลลัพธ์คือ hello wodl ใครช่วยอธิบายเรื่องนี้

4
จะทราบได้อย่างไรว่าไฟล์ส่วนหัวมาจากไหน?
ฉันจะทราบได้อย่างไรว่า g ++ สามารถค้นหาไฟล์รวมได้อย่างไร โดยทั่วไปถ้าฉัน #include <foo.h> g ++ จะสแกนเส้นทางการค้นหาโดยใช้ตัวเลือกรวมใด ๆ เพื่อเพิ่มหรือแก้ไขเส้นทาง แต่ในตอนท้ายของวันมีวิธีใดบ้างที่ฉันสามารถบอกเส้นทางสัมบูรณ์ของ foo.h ที่ g ++ เลือกรวบรวมได้? เกี่ยวข้องโดยเฉพาะอย่างยิ่งหากมี foo.h มากกว่าหนึ่งรายการในเส้นทางการค้นหามากมาย สั้น ๆ วิธีที่จะทำให้สำเร็จ ... มีวิธีรับ g ++ เพื่อบอกฉันว่าเส้นทางการค้นหาสุดท้ายคืออะไรหลังจากรวมค่าเริ่มต้นและตัวเลือกทั้งหมดรวมถึง?
102 c++  c  gcc  include  g++ 


3
เราจะดูเนื้อหาของสแต็กด้วย GDB ได้อย่างไร
ฉันยังใหม่กับ GDB ดังนั้นฉันจึงมีคำถาม: ฉันจะดูเนื้อหาของสแต็กได้อย่างไร ตัวอย่าง: info registersดูเนื้อหาของการลงทะเบียนผมพิมพ์ สำหรับสแต็คควรเป็นอย่างไร? ฉันจะดูเนื้อหาของ$0x4(%esp)? เมื่อฉันพิมพ์print /d $0x4(%esp)GDB จะแสดงข้อผิดพลาด แพลตฟอร์ม: Linux และ GDB
102 c  assembly  gdb 

24
ทำไมคุณไม่ใช้ C สำหรับเว็บแอปของคุณ
ผมก็มีลักษณะที่ไม่กี่เว็บเซิร์ฟเวอร์ที่แตกต่างกันเมื่อเช้านี้ผมมาในG-WAN ตามที่ฉันเข้าใจมันเป็นเว็บเซิร์ฟเวอร์ที่เขียนด้วย C และคุณต้องใช้ประโยชน์จากมันโดยการเขียนเว็บไซต์ / เว็บแอพของคุณใน C ประโยชน์ที่ชัดเจนอย่างหนึ่งคือความเร็วตามที่ไซต์ G-WAN แนะนำ อย่างไรก็ตามในฟอรัมผู้สร้าง G-WAN ถามว่าทำไมไม่ใช้ C สำหรับแอปบนเว็บและฉันไม่สามารถคิดเหตุผลเดียวได้นอกจากมันยาก (สำหรับฉันแล้วฉันเป็นมือใหม่เมื่อพูดถึง C) ต้องมีเหตุผลมากกว่านี้ว่าทำไมเราถึงใช้ PHP, Python, Ruby และอื่น ๆ นอกเหนือจากความง่ายในการพัฒนาในภาษาเหล่านี้ ฉันไม่เห็นว่าเป็นเหตุผลที่ดี ฉันจึงนำมาให้คุณ: ทำไมคุณไม่ใช้ C สำหรับเว็บแอปของคุณ?
101 php  c  web-applications 

16
ฟังก์ชันจับเวลาเพื่อให้เวลาเป็นนาโนวินาทีโดยใช้ C ++
ฉันต้องการคำนวณเวลาที่ API ใช้ในการส่งคืนค่า เวลาที่ใช้ในการดำเนินการดังกล่าวอยู่ในช่วงนาโนวินาที เนื่องจาก API เป็นคลาส / ฟังก์ชัน C ++ ฉันจึงใช้ timer.h เพื่อคำนวณค่าเดียวกัน: #include <ctime> #include <cstdio> using namespace std; int main(int argc, char** argv) { clock_t start; double diff; start = clock(); diff = ( std::clock() - start ) / (double)CLOCKS_PER_SEC; cout<<"printf: "<< diff <<'\n'; return 0; } …
101 c++  c  timer 

4
ตัวระบุรูปแบบ printf สำหรับ uint32_t และ size_t
ฉันมีดังต่อไปนี้ size_t i = 0; uint32_t k = 0; printf("i [ %lu ] k [ %u ]\n", i, k); ฉันได้รับคำเตือนต่อไปนี้เมื่อคอมไพล์: format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’ เมื่อฉันวิ่งโดยใช้เฝือกฉันได้รับสิ่งต่อไปนี้: Format argument 1 to printf (%u) expects unsigned int gets size_t: k ขอบคุณมากสำหรับคำแนะนำใด ๆ
101 c  printf 

1
[N … M] หมายถึงอะไรใน C aggregate initializers?
จากsys.cบรรทัด 123: void *sys_call_table[__NR_syscalls] = { [0 ... __NR_syscalls-1] = sys_ni_syscall, #include <asm/unistd.h> }; sys_call_tableเป็นตัวชี้ทั่วไปไปยังอาร์เรย์ฉันเห็นว่า อย่างไรก็ตามสัญกรณ์คืออะไร: [0 ... __NR_syscalls-1] คืออะไร...? แก้ไข: ผมได้เรียนรู้เคล็ดลับ C อีกที่นี่: #include <asm/unistd.h>จะได้รับการประมวลผลล่วงหน้า[0 ... _NR_syscalls-1]และแทนที่ด้วยเนื้อหาและมอบหมายให้
101 c  linux  kernel 

14
วิธีที่ดีที่สุดในการวนกลับใน C / C # / C ++ คืออะไร?
ฉันต้องการเลื่อนไปข้างหลังผ่านอาร์เรย์ดังนั้นฉันจึงมีรหัสดังนี้: for (int i = myArray.Length - 1; i >= 0; i--) { // Do something myArray[i] = 42; } มีวิธีที่ดีกว่านี้หรือไม่? อัปเดต: ฉันหวังว่า C # อาจมีกลไกในตัวสำหรับสิ่งนี้: foreachbackwards (int i in myArray) { // so easy } การปรับปรุงที่ 2: มีมีวิธีที่ดีกว่า Rune รับรางวัลด้วย: for (int i = myArray.Length; i-- > 0; ) …
101 c#  c++  c 

9
จะสร้างบริบทการแสดงผล OpenGL ที่มีพื้นหลังโปร่งใสได้อย่างไร
บริบทการแสดงผลมักจะมีสีทึบบนพื้นหลัง (สีดำหรืออะไรก็ตามดูภาพด้านล่าง): ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะตั้งค่าหน้าต่างโดยไม่มีการตกแต่งและมีพื้นหลังโปร่งใสในขณะที่อนุญาตให้ฉันแสดงสิ่งต่างๆของ OpenGL ได้ สิ่งนี้จะทำให้ภาพลวงตาว่าสามเหลี่ยมลอยอยู่บนหน้าจอ พื้นหลังโปร่งใสควรช่วยให้คุณเห็นเดสก์ท็อปหรือแอปพลิเคชันอื่น ๆ ที่อาจอยู่เบื้องหลัง คุณช่วยยกตัวอย่างด้วยซอร์สโค้ดได้ไหม แพลตฟอร์ม: Windows (win32 เท่านั้น)
101 c  winapi  opengl  transparency 

13
การใช้ฟังก์ชัน exit ()
ฉันต้องการทราบว่าฉันจะใช้exit()ฟังก์ชันเช่นโปรแกรมในหนังสือของฉันได้อย่างไรและเมื่อใด: #include<stdio.h> void main() { int goals; printf("enter number of goals scored"); scanf("%d",&goals); if(goals<=5) goto sos; else { printf("hehe"); exit( ); } sos: printf("to err is human"); } เมื่อฉันเรียกมันก็แสดงให้เห็นข้อผิดพลาด: การเรียกร้องให้ออกจากฟังก์ชั่นที่ไม่ได้กำหนด () นอกจากนี้ฉันต้องการทราบว่าฉันจะสร้างตัวเลือกเพื่อปิดหน้าต่างที่โปรแกรมทำงานได้อย่างไร? ตัวอย่างเช่นผมทำโปรแกรมเมนูขับเคลื่อนที่มีหลายตัวเลือกและหนึ่งในนั้นคือ"ออกจากเมนู" ฉันจะออกจากโปรแกรมได้อย่างไร (เช่นปิดหน้าต่าง)
101 c 

7
คุณสร้างอาร์เรย์ของโครงสร้างใน C ได้อย่างไร?
ฉันกำลังพยายามสร้างอาร์เรย์ของโครงสร้างโดยแต่ละโครงสร้างแทนเทห์ฟากฟ้า ฉันไม่มีประสบการณ์กับโครงสร้างมากขนาดนั้นซึ่งเป็นเหตุผลว่าทำไมฉันจึงตัดสินใจลองใช้มันแทนอาร์เรย์ทั้งหมด อย่างไรก็ตามฉันยังคงพบข้อผิดพลาดต่างๆมากมาย ฉันได้พยายามใช้เทคนิคที่ฉันเคยเห็นในเธรดต่างๆและบน StackOverflow (เช่นArray of structs ใน CและC - เริ่มต้นอาร์เรย์ของโครงสร้าง ) แต่ไม่สามารถใช้ได้ทั้งหมด ข้อมูลเพิ่มเติมสำหรับผู้ที่อ่านมาจนถึงตอนนี้: ฉันไม่ต้องการให้สิ่งนี้เป็นแบบไดนามิกฉันรู้ / กำหนดขนาดของทุกอย่างล่วงหน้า ฉันต้องการให้สิ่งนี้เป็นอาร์เรย์ส่วนกลางเนื่องจากฉันเข้าถึงสิ่งนี้ด้วยวิธีการต่างๆซึ่งได้กำหนดอาร์กิวเมนต์ (เช่นเมธอด GLUT) นี่คือวิธีที่ฉันกำหนดโครงสร้างในส่วนหัวของฉัน: struct body { double p[3];//position double v[3];//velocity double a[3];//acceleration double radius; double mass; }; ฉันมีรายการตัวแปรส่วนกลางอื่น ๆ ที่ฉันกำหนดก่อนที่ฉันจะกำหนดภายในของโครงสร้างและหนึ่งในนั้นคืออาร์เรย์ของโครงสร้างนี้ (โดยทั่วไปถ้าฉันไม่ชัดเจนเกินไปในการพูดที่มีหมอกของฉันบรรทัดด้านล่าง อยู่เหนือสิ่งต่างๆด้านบน): struct body bodies[n]; เพียงเพื่อให้คุณรู้ว่าnเป็นสิ่งที่ฉันได้ถูกต้องตามกฎหมายที่กำหนดไว้ (เช่น#define n 1) ฉันใช้อาร์เรย์นี้ในหลายวิธี แต่วิธีที่ง่ายที่สุดและใช้พื้นที่น้อยที่สุดคือรูปแบบที่เรียบง่ายของ …
101 c  arrays  struct 

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