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

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


30
อัลกอริทึม: วิธีที่มีประสิทธิภาพในการลบจำนวนเต็มที่ซ้ำกันออกจากอาร์เรย์
ฉันได้รับปัญหานี้จากการสัมภาษณ์กับ Microsoft ให้อาร์เรย์ของจำนวนเต็มสุ่มเขียนอัลกอริทึมใน C ที่ลบตัวเลขที่ซ้ำกันและส่งกลับตัวเลขที่ไม่ซ้ำกันในอาร์เรย์เดิม เช่นอินพุต: {4, 8, 4, 1, 1, 2, 9} เอาต์พุต:{4, 8, 1, 2, 9, ?, ?} ข้อแม้อย่างหนึ่งคืออัลกอริทึมที่คาดไว้ไม่ควรกำหนดให้เรียงลำดับอาร์เรย์ก่อน และเมื่อนำองค์ประกอบออกแล้วองค์ประกอบต่อไปนี้จะต้องเลื่อนไปข้างหน้าเช่นกัน อย่างไรก็ตามค่าขององค์ประกอบที่หางของอาร์เรย์ซึ่งองค์ประกอบถูกเลื่อนไปข้างหน้านั้นมีความสำคัญเล็กน้อย อัปเดต:ผลลัพธ์จะต้องถูกส่งคืนในอาร์เรย์ดั้งเดิมและไม่ควรใช้โครงสร้างข้อมูลตัวช่วย (เช่นแฮชแท็ก) อย่างไรก็ตามฉันเดาว่าไม่จำเป็นต้องเก็บรักษาคำสั่งซื้อ Update2:สำหรับผู้ที่สงสัยว่าเหตุใดจึงมีข้อ จำกัด ที่ทำไม่ได้นี่เป็นคำถามสัมภาษณ์และจะมีการพูดถึงข้อ จำกัด เหล่านี้ในระหว่างกระบวนการคิดเพื่อดูว่าฉันจะคิดอย่างไร

3
CHAR_BIT คืออะไร
การอ้างรหัสสำหรับการคำนวณค่าสัมบูรณ์จำนวนเต็ม (abs) โดยไม่แยกจากhttp://graphics.stanford.edu/~seander/bithacks.html : int v; // we want to find the absolute value of v unsigned int r; // the result goes here int const mask = v >> sizeof(int) * CHAR_BIT - 1; r = (v + mask) ^ mask; รูปแบบที่จดสิทธิบัตร: r = (v ^ mask) - mask; …

9
เหตุใด ANSI C จึงไม่มีเนมสเปซ
การมีเนมสเปซดูเหมือนจะไม่ใช่เรื่องง่ายสำหรับภาษาส่วนใหญ่ แต่เท่าที่บอก ANSI C ไม่รองรับ ทำไมจะไม่ล่ะ? มีแผนที่จะรวมไว้ในมาตรฐานในอนาคตหรือไม่?
93 c  namespaces  ansi-c 

12
วิธีที่เร็วที่สุดในการทำให้อาร์เรย์ 2d ใน C เป็นศูนย์
ฉันต้องการศูนย์อาร์เรย์ 2d ขนาดใหญ่ซ้ำ ๆ ใน C นี่คือสิ่งที่ฉันทำในขณะนี้: // Array of size n * m, where n may not equal m for(j = 0; j < n; j++) { for(i = 0; i < m; i++) { array[i][j] = 0; } } ฉันได้ลองใช้ memset แล้ว: memset(array, 0, sizeof(array)) แต่ใช้ได้กับอาร์เรย์ 1D เท่านั้น …


1
แปลงข้อมูลเลขฐานสิบหกเป็นไบนารีโดยใช้คำสั่ง Linux
ฉันมีไฟล์ไบนารีนี้ในระบบ Linux ของฉัน ... udit@udit-Dabba ~ $ cat file.enc Salted__s�bO��<0�F���Jw!���]�:`C�LKȆ�l ใช้คำสั่ง hexdump ฉันเห็นข้อมูลดังนี้: udit@udit-Dabba ~ $ hexdump -C file.enc 00000000 53 61 6c 74 65 64 5f 5f 1b 73 a1 62 4f 15 be f6 |Salted__.s.bO...| 00000010 3c 30 cc 46 ee 10 13 11 84 bf 4a 77 …

11
มีฟังก์ชันคัดลอกอาร์เรย์ใน C / C ++ หรือไม่?
ฉันเป็นโปรแกรมเมอร์ Java ที่เรียนรู้ C / C ++ ฉันจึงรู้ว่า Java มีฟังก์ชันเหมือน System.arraycopy (); เพื่อคัดลอกอาร์เรย์ ฉันสงสัยว่ามีฟังก์ชันใน C หรือ C ++ เพื่อคัดลอกอาร์เรย์หรือไม่ ฉันสามารถค้นหาการใช้งานเพื่อคัดลอกอาร์เรย์โดยใช้สำหรับลูปพอยน์เตอร์ ฯลฯ เท่านั้น มีฟังก์ชันที่ฉันสามารถใช้เพื่อคัดลอกอาร์เรย์ได้หรือไม่?
93 c++  c  arrays 

5
gdb:“ ไม่มีการโหลดตารางสัญลักษณ์”
ฉันได้รับข้อความแสดงข้อผิดพลาดนี้เรื่อย ๆ เมื่อพยายามเพิ่มเบรกพอยต์ใน gdb ฉันใช้คำสั่งเหล่านี้เพื่อรวบรวม: gcc -g main.c utmpib2.c -o main.o and: cc -g main.c utmpib2.c -o main.o and also: g++ -g main.c utmpib2.c -o main.o ฉันลองใช้ "-ggdb" แทน "-g" ด้วยและฉันก็ยังคงได้รับข้อความแสดงข้อผิดพลาดนั้น จากนั้นฉันรัน gdb: $gdb ใน gdb: (gdb)exec-file main.o (gdb)break 59 No symbol table is loaded. Use the "file" command.
93 c  gdb 


4
เรียกใช้ฟังก์ชัน C จากรหัส C ++
ฉันมีฟังก์ชัน C ที่ฉันต้องการเรียกใช้จาก C ++ ฉันไม่สามารถใช้extern "C" void foo()วิธีการแบบ "" ได้เนื่องจากฟังก์ชัน C ไม่สามารถคอมไพล์โดยใช้ g ++ แต่มันรวบรวมได้ดีโดยใช้ gcc มีความคิดอย่างไรในการเรียกใช้ฟังก์ชันจาก C ++?
93 c++  c  linux  extern-c 

7
ประเภทข้อมูลที่ไม่ได้ลงชื่อคืออะไร
ฉันเคยเห็นunsignedประเภท "ไร้ประเภท" นี้มาแล้วสองสามครั้ง แต่ไม่เคยเห็นคำอธิบาย ฉันคิดว่ามีsignedประเภทที่เกี่ยวข้อง นี่คือตัวอย่าง: static unsigned long next = 1; /* RAND_MAX assumed to be 32767 */ int myrand(void) { next = next * 1103515245 + 12345; return((unsigned)(next/65536) % 32768); } void mysrand(unsigned seed) { next = seed; } สิ่งที่ฉันรวบรวมมาจนถึงตอนนี้: - ในระบบของฉันsizeof(unsigned) = 4(บอกใบ้ int ที่ไม่ได้ลงนาม 32 บิต) …
93 c  types  unsigned 

4
scanf () ออกจากอักขระบรรทัดใหม่ในบัฟเฟอร์
ฉันมีโปรแกรมต่อไปนี้: int main(int argc, char *argv[]) { int a, b; char c1, c2; printf("Enter something: "); scanf("%d",&a); // line 1 printf("Enter other something: "); scanf("%d", &b); // line 2 printf("Enter a char: "); scanf("%c",&c1); // line 3 printf("Enter another char: "); scanf("%c", &c2); // line 4 printf("Done"); // line 5 …
93 c  scanf 


4
หลักการออกแบบแนวทางปฏิบัติที่ดีที่สุดและรูปแบบการออกแบบสำหรับ C (หรือการเขียนโปรแกรมขั้นตอนโดยทั่วไป)? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบพร้อมข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ มีหลักการออกแบบแนวทางปฏิบัติที่ดีที่สุดและรูปแบบการออกแบบที่เป็นที่รู้จักที่สามารถปฏิบัติตามได้ในขณะออกแบบโครงการ C หรือไม่? หรือหลักการออกแบบที่เป็นประโยชน์สำหรับการเขียนโปรแกรมขั้นตอน (จำเป็น) โดยทั่วไป? (ฉันเป็นลูกของ 'รุ่นเชิงวัตถุ' และต้องออกแบบโครงการ C ขนาดใหญ่เป็นครั้งแรก)

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