在线 C 语言编译器

在浏览器中编写、编译并运行 C 代码,适合学习、练习与快速验证。

C 代码编辑器

输出

标准输出(stdout)

 

标准错误(stderr)

 

使用说明

  • 在左侧编辑器编写 C 代码(包含 #include <stdio.h> 等头文件)。
  • 点击“运行代码”即可在线编译并执行程序。
  • 右侧面板展示输出与错误信息。
  • 绿色区域为标准输出(例如 printf 输出)。
  • 红色区域为编译/运行错误与警告。
  • 执行信息包含退出码与运行状态。
  • 快捷键:Ctrl+Enter(Mac 上为 Cmd+Enter)。

C 语言基础

基本结构:

#include <stdio.h>

int main(void) {
    printf("Hello, C!\\n");
    return 0;
}

常用头文件:

  • <stdio.h> - 标准输入输出
  • <stdlib.h> - 内存分配、转换、退出
  • <string.h> - 字符串/内存操作
  • <math.h> - 数学函数
  • <stdbool.h> - 布尔类型 bool

数据类型与变量

基本类型:

  • int - 整型
  • float / double - 浮点型
  • char - 字符
  • char[] - 字符串(以 \0 结尾)
  • bool - 布尔(需 <stdbool.h>

示例:

#include <stdbool.h>
int age = 25;
double height = 1.75;
char name[16] = "John";
bool isStudent = true;

控制结构

条件语句:

if (condition) {
    /* code */
} else if (other) {
    /* code */
} else {
    /* code */
}

循环:

/* for 循环 */
for (int i = 0; i < 10; i++) {
    printf("%d\\n", i);
}

/* while 循环 */
while (condition) {
    /* code */
}

函数与数组

函数声明:

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

void printMessage(const char* msg) {
    printf("%s\\n", msg);
}

数组:

int arr[5] = {1, 2, 3, 4, 5};
/* C 中无 vector,请使用数组或动态内存分配 */

常见问题

支持哪些 C 标准?

支持常见的 C 标准(如 C99 / C11)。多数标准库与常用语法均可使用。

可以使用第三方库吗?

可使用标准 C 库(如 stdio、stdlib、string 等)。由于运行在沙箱中,第三方系统库/网络访问不可用。

运行是否有时间限制?

有。为避免死循环并保证公平使用,编译/运行都有时间限制,超时会自动终止。

可以保存代码吗?

暂不支持在线保存。建议将重要代码复制到本地,或使用收藏夹/笔记工具保存片段。

为什么会出现编译错误?

常见原因:缺少分号、未声明变量、语法错误、缺少头文件、类型不匹配,或未提供 main 函数等。请根据错误信息逐条修复。

运行时可以交互输入吗?

当前不支持交互式输入(如 scanf 等)。如需测试,可将测试数据写死在代码中,或用固定数据替代。

编译错误与运行时错误的区别?

编译错误 多为语法/链接问题;运行时错误 发生在执行阶段,例如除零、数组越界、段错误(segmentation fault)等。

示例程序(点击上方运行)

1. 递归计算阶乘

#include <stdio.h>

int factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

int main(void) {
    printf("5! = %d\\n", factorial(5));
    return 0;
}

2. 数组最大值

#include <stdio.h>

int main(void) {
    int nums[5] = {3, 7, 1, 9, 4};
    int max_val = nums[0];
    for (int i = 1; i < 5; i++) {
      if (nums[i] > max_val) max_val = nums[i];
    }
    printf("Maximum: %d\\n", max_val);
    return 0;
}