คอมไพเลอร์และดีบักเกอร์ C ออนไลน์

ดีบัก C ด้วย breakpoint ตัวแปร และการทำงานทีละขั้นของ GDB ในโหมดเซิร์ฟเวอร์

🚀 1,301,876 การดำเนินการทั้งหมด (29,306 ในเดือนนี้)
ผลลัพธ์

ฝึก C++ ด้วยโจทย์เขียนโค้ด

แก้โจทย์จริงใน editor นี้: รันทดสอบตัวอย่าง ส่งคำตอบ และรับรีวิวโค้ดจาก AI

โจทย์ C++ ทั้งหมด
ง่าย

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

คุณจะได้เรียนรู้ เลขคณิตค่าที่คืนกลับ
BeginnerLearning-pathVariables
ง่าย

Distance Between Points

Compute the straight-line distance between two points.

คุณจะได้เรียนรู้ ทฤษฎีบทพีทาโกรัสรากที่สอง
BeginnerFunctionsLearning-pathmath
ง่าย

Average of Three

Average three whole numbers.

คุณจะได้เรียนรู้ เลขคณิตการหาร
BeginnerLearning-pathVariables
ง่าย

Days in a Month

Return how many days a month has, including leap years.

คุณจะได้เรียนรู้ กฎของปฏิทินฟังก์ชันช่วย
BeginnerConditionsFunctionsLearning-path
ง่าย

ผลคูณจุดของเวกเตอร์สองตัว

คูณเวกเตอร์สองตัวทีละสมาชิกแล้วรวมผลลัพธ์ ซึ่งเป็นการคำนวณหลักของทุกนิวรอน

คุณจะได้เรียนรู้ เวกเตอร์ผลคูณจุด
โครงข่ายประสาทเทียมaiการเรียนรู้ของเครื่อง
ง่าย

ตรวจสอบจำนวนเฉพาะ

ตัดสินว่าตัวเลขเป็นจำนวนเฉพาะหรือไม่

คุณจะได้เรียนรู้ การหารลงตัวปรับลูปให้เร็วขึ้น
BeginnerLoopsNumbersStudent-beginner
ง่าย

ตัวเลขอาร์มสตรอง

ตรวจสอบว่าตัวเลขเท่ากับผลรวมของแต่ละหลักยกกำลังจำนวนหลักหรือไม่

คุณจะได้เรียนรู้ แยกหลักตัวเลขเลขยกกำลัง
BeginnerNumbersStudent-beginner
ง่าย

Largest of Three

Pick the largest of three numbers without a built-in max.

คุณจะได้เรียนรู้ การเปรียบเทียบรวมเงื่อนไข
BeginnerConditionsLearning-path
ง่าย

สามเหลี่ยมตัวเลข

สร้างสามเหลี่ยมที่มีตัวเลขเพิ่มขึ้นในแต่ละแถว

คุณจะได้เรียนรู้ แถวที่ยาวขึ้นตัวนับข้ามแถว
BeginnerLearning-pathNested-loopsPatterns
ง่าย

Row Sums

Add up every row of a grid.

คุณจะได้เรียนรู้ ลิสต์ 2 มิติลูปซ้อน
BeginnerGridsLearning-path
ง่าย

Sum of Odd Numbers

Add every odd number up to a limit.

คุณจะได้เรียนรู้ ลูป forตัวสะสม
BeginnerLearning-pathLoops
ง่าย

รายการสิ่งที่ต้องทำ

จัดการรายการงาน: เพิ่ม ทำเครื่องหมายว่าเสร็จ ลบ และรายงานงานที่ยังค้างอยู่

คุณจะได้เรียนรู้ คอลเลกชันที่มีชนิดRecord
BeginnerSimulationStrings

🧩 เกี่ยวกับตัวรัน C ออนไลน์นี้

CodeUtility C Executor ช่วยให้คุณเขียนและรันโปรแกรม C ได้โดยตรงในเบราว์เซอร์ของคุณ - ไม่ต้องติดตั้งหรือเซ็ตอัพคอมไพเลอร์ มันทำงานบน sandbox ที่ปลอดภัยและรองรับมาตรฐาน C จริงๆ รวมถึง C89, C99, C11 และเวอร์ชันล่าสุด

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

เครื่องมือนี้ถูกออกแบบมาเพื่อช่วยผู้เรียนและนักพัฒนาให้ทดลองพื้นฐานของ C ได้อย่างรวดเร็ว - เช่น ชนิดข้อมูล, พอยน์เตอร์, ลูป, ฟังก์ชัน, อาเรย์ และสตรักเจอร์ - โดยไม่ต้องติดตั้งคอมไพเลอร์หรือ IDE ใดๆ

มากกว่าเครื่องมือรันโค้ด

ใช้ตัวแก้ไขหลายไฟล์ เทอร์มินัลประมวลผลแบบแยกส่วน ไลบรารีเฉพาะรันไทม์ พื้นที่ทำงานถาวร การแชร์ และการทำงานร่วมกันแบบเรียลไทม์ได้จากตัวประมวลผลเดียวกัน

วิธีใช้ตัวประมวลผลนี้

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

  1. เลือกเวอร์ชันแล้วแก้ไขไฟล์ปัจจุบัน หรือเปิดไฟล์อื่นในพื้นที่ทำงาน
  2. เรียกใช้โค้ด ป้อนข้อมูลในเทอร์มินัลเมื่อระบบร้องขอ และตรวจสอบประวัติการเรียกใช้ที่บันทึกไว้
  3. ใช้ไลบรารี เครื่องมือพื้นที่ทำงาน การแชร์ และแชท เมื่องานของคุณต้องใช้โค้ดมากกว่าหนึ่งส่วน

💡 พื้นฐาน C และตัวอย่างที่คุณลองได้ด้านบน

1. การประกาศตัวแปรและค่าคงที่

C ต้องการให้คุณระบุชนิดของตัวแปรทุกตัว ใช้ #define หรือ const เพื่อกำหนดค่าที่อ่านได้อย่างเดียว

int age = 30;
double pi = 3.14159;
char grade = 'A';
char name[] = "Alice";
bool isActive = 1; // จริง

// ค่าคงที่
#define MAX_USERS 100
const char* COMPANY = "CodeUtility";

2. คำสั่งเงื่อนไข (if / switch)

ใช้ if, else if และ switch สำหรับการตัดสินใจ

int x = 2;
if (x == 1) {
    printf("หนึ่ง\n");
} else if (x == 2) {
    printf("สอง\n");
} else {
    printf("อื่นๆ\n");
}

switch (x) {
    case 1:
        printf("หนึ่ง\n");
        break;
    case 2:
        printf("สอง\n");
        break;
    default:
        printf("อื่นๆ\n");
}

3. ลูป

ใช้ for, while และ do-while สำหรับการทำซ้ำ

for (int i = 0; i < 3; i++) {
    printf("%d\n", i);
}

int n = 3;
while (n > 0) {
    printf("%d\n", n);
    n--;
}

4. อาเรย์

อาเรย์เก็บองค์ประกอบหลายตัวที่มีชนิดเดียวกัน

int numbers[3] = {10, 20, 30};
printf("%d\n", numbers[1]);

5. Struct

struct ช่วยจัดกลุ่มข้อมูลที่เกี่ยวข้องกัน

struct Person {
    char name[50];
    int age;
};

struct Person p = {"Alice", 30};
printf("%s อายุ %d ปี\n", p.name, p.age);

6. อินพุต/เอาต์พุตผ่านคอนโซล

ใช้ printf และ scanf สำหรับ I/O บนคอนโซล

char name[50];
printf("กรอกชื่อของคุณ: ");
scanf("%s", name);
printf("สวัสดี, %s\n", name);

7. ฟังก์ชัน

ฟังก์ชันช่วยห่อหุ้มลอจิกที่นำกลับมาใช้ซ้ำได้ ระบุชนิดค่าที่ส่งกลับ ชื่อ และพารามิเตอร์

int add(int a, int b) {
    return a + b;
}

printf("%d\n", add(3, 4));

8. พอยน์เตอร์

ใช้พอยน์เตอร์เพื่อเก็บที่อยู่หน่วยความจำและจัดการข้อมูลทางอ้อม

int x = 10;
int* ptr = &x;

printf("ค่า x: %d\n", x);
printf("ที่อยู่ของ x: %p\n", ptr);
printf("ค่าจากพอยน์เตอร์: %d\n", *ptr);

*ptr = 20;
printf("ค่า x ที่อัปเดต: %d\n", x);

9. การทำงานกับไฟล์ (File I/O)

ใช้ fopen, fprintf, fscanf และ fclose สำหรับการทำงานกับไฟล์

FILE* file = fopen("file.txt", "w");
fprintf(file, "สวัสดีไฟล์");
fclose(file);

char line[100];
file = fopen("file.txt", "r");
fgets(line, sizeof(line), file);
printf("%s", line);
fclose(file);

10. การจัดการสตริง

ใช้ฟังก์ชันจาก <string.h> เช่น strlen, strcpy และ strcmp.

#include <string.h>

char text[] = "สวัสดี";
char copy[10];

strcpy(copy, text);
printf("ความยาว: %lu\n", strlen(copy));
printf("เปรียบเทียบ: %d\n", strcmp(copy, "สวัสดี"));

11. หน่วยความจำแบบไดนามิก

ใช้ malloc และ free สำหรับการจัดสรรหน่วยความจำบนฮีป

int* nums = (int*) malloc(3 * sizeof(int));
nums[0] = 1; nums[1] = 2; nums[2] = 3;

for (int i = 0; i < 3; i++) {
    printf("%d ", nums[i]);
}

free(nums);

🐞 วิธีดีบักโค้ด %{language} ออนไลน์

ใช้ดีบักเกอร์ %{language} ออนไลน์เพื่อค้นหาข้อผิดพลาด runtime และ logic โดยไม่ต้องติดตั้งคอมไพเลอร์หรือ IDE โหมดเซิร์ฟเวอร์จะคอมไพล์พร้อม debug symbols และรันด้วย GDB

  1. ตั้ง breakpoint ข้างหมายเลขบรรทัด
  2. เลือก Debug เพื่อคอมไพล์และหยุดที่ breakpoint แรก
  3. ตรวจสอบบรรทัด call stack และตัวแปร
  4. ใช้ Continue, Step Over, Step Into หรือ Step Out
  5. เลือก Stop เพื่อจบการดีบัก

เริ่มจากตัวอย่างขนาดเล็กที่ทำให้เกิดปัญหาได้ และตั้ง breakpoint ก่อนพฤติกรรมที่ไม่คาดคิด