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

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

3
ฉันจะสร้าง Makefile สำหรับโปรเจ็กต์ C ที่มีไดเร็กทอรีย่อย SRC, OBJ และ BIN ได้อย่างไร
ไม่กี่เดือนที่ผ่านมาฉันคิดเรื่องทั่วไปMakefileสำหรับงานโรงเรียนดังต่อไปนี้: # ------------------------------------------------ # Generic Makefile # # Author: yanick.rochon@gmail.com # Date : 2010-11-05 # # Changelog : # 0.01 - first version # ------------------------------------------------ # project name (generate executable with this name) TARGET = projectname CC = gcc -std=c99 -c # compiling flags here CFLAGS = -Wall -I. LINKER …
95 c  makefile 


7
วิธีการตั้งค่า cron job เพื่อเรียกใช้งานปฏิบัติการทุกชั่วโมง?
ฉันต้องการตั้งค่างาน cron ที่เรียกใช้ไฟล์ปฏิบัติการที่คอมไพล์โดยใช้ gcc ทุกๆชั่วโมง ฉันล็อกอินด้วยรูทและพิมพ์ crontab -e จากนั้นฉันป้อนข้อมูลต่อไปนี้และบันทึกไฟล์ 0 * * * * /path_to_executable อย่างไรก็ตามงาน cron ไม่ทำงาน ฉันเห็นว่าเมื่อฉันพิมพ์/...path_to_executableฉันได้รับข้อผิดพลาดในการแบ่งกลุ่ม ฉันสามารถเรียกใช้งานไฟล์ปฏิบัติการได้จากโฟลเดอร์ที่อยู่ในโฟลเดอร์เท่านั้นมีวิธีใดบ้างที่ฉันสามารถแก้ปัญหานี้ได้
95 c  linux  gcc  cron  crontab 

12
วิธีคำนวณการใช้งาน CPU ของกระบวนการโดย PID ใน Linux จาก C?
ฉันต้องการเขียนโปรแกรม [ใน C] คำนวณ% การใช้งาน CPU สำหรับ ID กระบวนการที่กำหนดใน Linux เราจะรับ% การใช้งาน CPU แบบเรียลไทม์สำหรับกระบวนการที่กำหนดได้อย่างไร เพื่อให้ชัดเจนยิ่งขึ้น: ฉันควรจะสามารถกำหนดการใช้งาน CPU สำหรับ processid หรือกระบวนการที่ให้มา กระบวนการไม่จำเป็นต้องเป็นกระบวนการย่อย ฉันต้องการคำตอบในภาษา 'C'
95 c  linux  cpu-usage 

4
ประเภทเช่น uint32, int32, uint64, int64 ถูกกำหนดไว้ในส่วนหัวของ stdlib หรือไม่
ฉันมักจะเห็นซอร์สโค้ดโดยใช้ประเภทเช่น uint32, uint64 และฉันสงสัยว่าควรกำหนดโดยโปรแกรมเมอร์ในรหัสแอปพลิเคชันหรือหากกำหนดไว้ในส่วนหัว lib มาตรฐาน อะไรคือวิธีที่ดีที่สุดในการมีประเภทเหล่านี้ในซอร์สโค้ดแอปพลิเคชันของฉัน
95 c  libc 

13
ตำแหน่งของเครื่องหมายดอกจันในการประกาศตัวชี้
ฉันเพิ่งตัดสินใจว่าในที่สุดฉันก็ต้องเรียนรู้ C / C ++ และมีสิ่งหนึ่งที่ฉันไม่เข้าใจจริงๆเกี่ยวกับพอยน์เตอร์หรือคำจำกัดความของมัน ตัวอย่างเหล่านี้เป็นอย่างไร: int* test; int *test; int * test; int* test,test2; int *test,test2; int * test,test2; ตอนนี้ตามความเข้าใจของฉันสามกรณีแรกล้วนทำเหมือนกัน: การทดสอบไม่ใช่ int แต่เป็นตัวชี้ไปที่หนึ่ง ตัวอย่างชุดที่สองค่อนข้างยุ่งยากกว่าเล็กน้อย ในกรณีที่ 4 ทั้ง test และ test2 จะเป็นตัวชี้ไปที่ int ในขณะที่ในกรณีที่ 5 การทดสอบเท่านั้นที่เป็นตัวชี้ในขณะที่ test2 เป็น int "จริง" แล้วกรณีที่ 6 ล่ะ? เหมือนกับกรณีที่ 5 หรือไม่?
95 c++  c  pointers  declaration 

7
ไม่พบข้อผิดพลาดตัวระบุ 'uint32_t'
ฉันกำลังโอนรหัสจาก Linux C ไปยัง Visual C ++ สำหรับ Windows Visual C ++ ไม่ทราบ#include <stdint.h>ดังนั้นฉันจึงแสดงความคิดเห็นออกไป ต่อมาฉันพบ'uint32_t': identifier not foundข้อผิดพลาดเหล่านั้นมากมาย จะแก้ไขได้อย่างไร?
95 c++  c  visual-c++ 

15
การใช้ goto อย่างถูกต้องสำหรับการจัดการข้อผิดพลาดใน C?
คำถามนี้เป็นผลมาจากการสนทนาที่น่าสนใจที่ programming.reddit.com เมื่อไม่นานมานี้ โดยทั่วไปแล้วจะเดือดตามรหัสต่อไปนี้: int foo(int bar) { int return_value = 0; if (!do_something( bar )) { goto error_1; } if (!init_stuff( bar )) { goto error_2; } if (!prepare_stuff( bar )) { goto error_3; } return_value = do_the_thing( bar ); error_3: cleanup_3(); error_2: cleanup_2(); error_1: cleanup_1(); return return_value; } …

2
ไม่คาดหวังสิทธิ์เรียกใช้จาก mmap เมื่อไฟล์ประกอบรวมอยู่ในโครงการ
ฉันกระแทกหัวของฉันกับกำแพงด้วยสิ่งนี้ ในโครงการของฉันเมื่อฉันจัดสรรหน่วยความจำด้วยmmapการจับคู่ ( /proc/self/maps) แสดงให้เห็นว่ามันเป็นพื้นที่ที่สามารถอ่านได้และปฏิบัติการได้แม้ว่าฉันจะขอหน่วยความจำที่สามารถอ่านได้เท่านั้น หลังจากตรวจสอบ strace (ซึ่งดูดี) และการดีบักอื่น ๆ ฉันสามารถระบุสิ่งเดียวที่ดูเหมือนว่าจะหลีกเลี่ยงปัญหาแปลก ๆ นี้ได้: การลบไฟล์ชุดประกอบออกจากโครงการและปล่อยให้เฉพาะ C. บริสุทธิ์ (อะไร?!) ดังนั้นนี่คือตัวอย่างที่แปลกประหลาดของฉันฉันกำลังทำงานบน Ubunbtu 19.04 และ gcc เริ่มต้น หากคุณรวบรวมเป้าหมายไฟล์ที่เรียกใช้งานได้ด้วยไฟล์ ASM (ซึ่งว่างเปล่า) mmapจะส่งคืนพื้นที่ที่สามารถอ่านได้และสามารถเรียกใช้งานได้หากคุณสร้างโดยไม่ต้องดำเนินการอย่างถูกต้อง ดูผลลัพธ์/proc/self/mapsที่ฉันได้ฝังในตัวอย่างของฉัน example.c #include <stdio.h> #include <string.h> #include <sys/mman.h> int main() { void* p; p = mmap(NULL, 8192,PROT_READ,MAP_ANONYMOUS|MAP_PRIVATE,-1,0); { FILE *f; char line[512], s_search[17]; …
94 c  linux  assembly  mmap 

13
C # vs C - ความแตกต่างของประสิทธิภาพที่ยิ่งใหญ่
ฉันพบความแตกต่างของประสิทธิภาพอย่างมากระหว่างโค้ดที่คล้ายกันใน C An C # รหัส C คือ: #include <stdio.h> #include <time.h> #include <math.h> main() { int i; double root; clock_t start = clock(); for (i = 0 ; i <= 100000000; i++){ root = sqrt(i); } printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC); } และ C # (แอปคอนโซล) …
94 c#  c  performance 

9
มีอะไรผิดปกติกับรหัส 1988 C นี้?
ฉันกำลังพยายามรวบรวมโค้ดชิ้นนี้จากหนังสือ "The C Programming Language" (K & R) เป็นโปรแกรม UNIX เวอร์ชันเปลือยwc: #include <stdio.h> #define IN 1; /* inside a word */ #define OUT 0; /* outside a word */ /* count lines, words and characters in input */ main() { int c, nl, nw, nc, state; state = OUT; nl …
94 c 

7
ในภาษา C ฉันจะอ่านไฟล์ข้อความและพิมพ์สตริงทั้งหมดได้อย่างไร
ฉันมีไฟล์ข้อความชื่อ test.txt ฉันต้องการเขียนโปรแกรม C ที่สามารถอ่านไฟล์นี้และพิมพ์เนื้อหาไปยังคอนโซล (สมมติว่าไฟล์มีเฉพาะข้อความ ASCII) ฉันไม่ทราบวิธีรับขนาดของตัวแปรสตริงของฉัน แบบนี้: char str[999]; FILE * file; file = fopen( "test.txt" , "r"); if (file) { while (fscanf(file, "%s", str)!=EOF) printf("%s",str); fclose(file); } ขนาด999ไม่ทำงานเนื่องจากสตริงที่ส่งคืนfscanfอาจมีขนาดใหญ่กว่านั้น ฉันจะแก้ปัญหานี้ได้อย่างไร?
94 c  file  text-files 

8
ฟังก์ชั่นแทรมโพลีนคืออะไร?
ในระหว่างการสนทนาล่าสุดในที่ทำงานมีคนพูดถึงฟังก์ชันแทรมโพลีน ผมได้อ่านคำอธิบายที่วิกิพีเดีย มันเพียงพอที่จะให้แนวคิดทั่วไปเกี่ยวกับฟังก์ชันการทำงาน แต่ฉันต้องการบางสิ่งที่เป็นรูปธรรมมากกว่านี้ คุณมีโค้ดง่ายๆที่จะแสดงให้เห็นถึงแทรมโพลีนหรือไม่?

9
เมื่อคุณออกจากแอปพลิเคชัน C หน่วยความจำ malloc-ed จะถูกปลดปล่อยโดยอัตโนมัติหรือไม่?
สมมติว่าฉันมีรหัส C ต่อไปนี้: int main () { int *p = malloc(10 * sizeof *p); *p = 42; return 0; //Exiting without freeing the allocated memory } เมื่อฉันรวบรวมและดำเนินการโปรแกรม C นั้นเช่นหลังจากจัดสรรพื้นที่ในหน่วยความจำแล้วหน่วยความจำที่ฉันจัดสรรจะยังคงได้รับการจัดสรร (กล่าวคือใช้พื้นที่ว่าง) หลังจากที่ฉันออกจากแอปพลิเคชันและกระบวนการสิ้นสุดลงหรือไม่


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