在 LabEx 中创建你的第一个 C 程序

CCBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何在 LabEx 虚拟机(VM)中编写并运行你的第一个 C 程序。你将从简单的 "Hello, World!" 程序开始,然后通过多个打印语句增强输出效果,使用变量个性化输出,探索 C 语言中的字符串操作,最后学习如何编译和调试 C 程序。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("`C`")) -.-> c/BasicsGroup(["`Basics`"]) c(("`C`")) -.-> c/ControlFlowGroup(["`Control Flow`"]) c(("`C`")) -.-> c/CompoundTypesGroup(["`Compound Types`"]) c(("`C`")) -.-> c/UserInteractionGroup(["`User Interaction`"]) c/BasicsGroup -.-> c/variables("`Variables`") c/BasicsGroup -.-> c/comments("`Comments`") c/ControlFlowGroup -.-> c/if_else("`If...Else`") c/CompoundTypesGroup -.-> c/strings("`Strings`") c/UserInteractionGroup -.-> c/output("`Output`") subgraph Lab Skills c/variables -.-> lab-438241{{"`在 LabEx 中创建你的第一个 C 程序`"}} c/comments -.-> lab-438241{{"`在 LabEx 中创建你的第一个 C 程序`"}} c/if_else -.-> lab-438241{{"`在 LabEx 中创建你的第一个 C 程序`"}} c/strings -.-> lab-438241{{"`在 LabEx 中创建你的第一个 C 程序`"}} c/output -.-> lab-438241{{"`在 LabEx 中创建你的第一个 C 程序`"}} end

编写并运行你的第一个 C 程序

在本步骤中,你将在 LabEx VM 中编写并运行你的第一个 C 程序。我们将引导你创建一个简单的 "Hello, World!" 程序,帮助你了解 C 编程的基本结构。

打开 WebIDE

  1. 在 LabEx 界面中点击 "WebIDE" 标签(默认)以打开类似 VS Code 的环境。
  2. 在左侧边栏的文件资源管理器中,右键点击并选择 "新建文件"。
  3. 将文件命名为 hello.c.c 扩展名表示这是一个 C 源代码文件。
WebIDE 界面截图

如果你想了解更多关于 WebIDE 的信息,请查看 WebIDE 指南

编写你的第一个 C 程序

将以下代码复制并粘贴到你的 hello.c 文件中:

#include <stdio.h>

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

让我们分解这段代码:

  • #include <stdio.h>:包含标准输入/输出库
  • int main() { ... }:程序执行的入口点,即主函数
  • printf("Hello, World!\n");:将文本打印到屏幕
  • \n:打印后换行
  • return 0;:表示程序成功完成

编译并运行程序

在 WebIDE 中打开终端并执行以下命令:

gcc hello.c -o hello
./hello
终端运行 C 程序

示例输出:

Hello, World!

命令解释

  • gcc hello.c -o hello:将 C 源代码编译为名为 hello 的可执行文件
  • ./hello:运行编译后的程序

使用多个打印语句增强输出

在本步骤中,你将学习如何通过添加多个打印语句来增强你的 C 程序。这将帮助你了解如何显示更复杂的输出,并在程序中使用多行文本。

修改现有程序

  1. 在 WebIDE 中打开你在上一步中创建的 hello.c 文件。
  2. 将文件内容替换为以下代码:
#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    printf("Welcome to C programming!\n");
    printf("This is your first multi-line program.\n");
    return 0;
}

代码解释

  • 我们添加了两个额外的 printf 语句
  • 每个 printf 都以 \n 结尾以创建新行
  • 分号 (;) 标记每条指令的结束

编译并运行更新后的程序

在 WebIDE 中打开终端并执行以下命令:

gcc hello.c -o hello
./hello

示例输出:

Hello, World!
Welcome to C programming!
This is your first multi-line program.

关键观察

  • 每个 printf 语句在单独的一行打印
  • \n 确保输出之间的换行
  • 你可以根据需要添加任意数量的 printf 语句

故障排除提示:

  • 确保每行以 \n 结尾
  • 检查每个 printf 语句是否以分号结尾
  • 确认在编译前已保存文件

使用变量个性化输出

在本步骤中,你将学习如何在 C 语言中使用变量来创建更具动态性和个性化的输出。变量允许你在程序中存储和操作数据。

创建一个包含变量的新 C 程序

  1. 打开 WebIDE 并创建一个名为 greeting.c 的新文件。或者,你可以在终端中输入 touch greeting.c 来创建文件。
  2. 将以下代码输入到 greeting.c 文件中:
#include <stdio.h>

int main() {
    char name[] = "LabEx";
    printf("Hello, %s!\n", name);
    printf("Welcome to C programming, %s!\n", name);
    return 0;
}

代码解释

  • char name[] = "LabEx";:创建一个名为 name 的字符数组(字符串)变量
  • %s 是一个格式说明符,用于告诉 printf 插入一个字符串
  • 格式字符串后的 , name 指定要插入的变量

编译并运行程序

在 WebIDE 中打开终端并执行以下命令:

gcc greeting.c -o greeting
./greeting

示例输出:

Hello, LabEx!
Welcome to C programming, LabEx!

尝试修改变量

尝试将 name 变量更改为你自己的名字:

char name[] = "Your Name";

重新编译并运行程序以查看个性化输出。

故障排除提示:

  • 确保在使用 printf 之前定义了变量
  • 检查在编译前是否已保存文件
  • 确认变量名称拼写正确

探索 C 语言中的字符串操作

在本步骤中,你将学习 C 语言中的基本字符串操作技术,包括字符串连接和使用标准库中的字符串相关函数。

创建一个字符串操作程序

  1. 打开 WebIDE 并创建一个名为 strings.c 的新文件。
  2. 输入以下代码:
#include <stdio.h>
#include <string.h>

int main() {
    char first_name[] = "Lab";
    char last_name[] = "Ex";
    char full_name[20];

    // 连接字符串
    strcpy(full_name, first_name);
    strcat(full_name, " ");
    strcat(full_name, last_name);

    // 打印字符串长度和连接后的名字
    printf("First name length: %lu\n", strlen(first_name));
    printf("Last name length: %lu\n", strlen(last_name));
    printf("Full name: %s\n", full_name);

    return 0;
}

代码解释

  • #include <string.h>:包含字符串操作函数
  • strcpy():将一个字符串复制到另一个字符串
  • strcat():连接(拼接)两个字符串
  • strlen():返回字符串的长度
  • %lu:用于无符号长整型的格式说明符(与字符串长度一起使用)

编译并运行程序

在 WebIDE 中打开终端并执行以下命令:

gcc strings.c -o strings
./strings

示例输出:

First name length: 3
Last name length: 2
Full name: Lab Ex

字符串操作技术

演示的关键字符串操作:

  • 创建字符数组
  • 使用 strcpy() 复制字符串
  • 使用 strcat() 连接字符串
  • 使用 strlen() 获取字符串长度

故障排除提示:

  • 确保目标字符串有足够的空间
  • 始终包含 <string.h> 以使用字符串函数
  • 注意字符串缓冲区的大小以防止溢出

编译和调试 C 程序

在本步骤中,你将学习 C 程序的编译和调试技术,包括理解编译器警告、使用编译标志以及基本的调试策略。

创建一个包含故意错误的程序

  1. 打开 WebIDE 并创建一个名为 debug.c 的新文件。
  2. 输入以下代码,其中包含一些故意引入的错误:
#include <stdio.h>

int main() {
    int x = 10;
    int y = 0;

    // 故意除以零
    int result = x / y;

    printf("Result: %d\n", result);

    // 未使用的变量
    int z = 5;

    return 0;
}

使用警告标志编译

使用额外的警告标志编译程序:

gcc -Wall -Wextra debug.c -o debug

编译标志解释

  • -Wall:启用大多数警告信息
  • -Wextra:启用更详细的警告信息

示例编译器输出:

debug.c: In function ‘main’:
debug.c:13:9: warning: unused variable ‘z’ [-Wunused-variable]
   13 |     int z = 5;
      |         ^

使用 GDB 进行调试

使用调试符号编译:

gcc -g debug.c -o debug

启动调试:

gdb ./debug

GDB 命令:

  • run:启动程序
  • break main:在 main 函数处设置断点
  • print x:打印变量 x 的值
  • next:执行下一行
  • quit:退出 GDB
(gdb) run
Starting program: /home/labex/project/debug
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGFPE, Arithmetic exception.
0x0000555555555167 in main () at debug.c:8
8           int result = x / y;
(gdb) print x
$1 = 10
(gdb) break main
Breakpoint 1 at 0x555555555155: file debug.c, line 4.
(gdb) next

Program terminated with signal SIGFPE, Arithmetic exception.
The program no longer exists.
(gdb) quit

GDB 显示在第 8 行发生了除以零错误。程序因算术异常而崩溃。

修复程序

修改 debug.c 以安全地处理除法:

#include <stdio.h>

int main() {
    int x = 10;
    int y = 2;  // 将 0 改为非零值

    if (y != 0) {
        int result = x / y;
        printf("Result: %d\n", result);
    } else {
        printf("Error: Division by zero!\n");
    }

    return 0;
}

重新编译并运行:

gcc -Wall -Wextra debug.c -o debug
./debug

输出:

Result: 5

故障排除提示:

  • 始终使用 -Wall -Wextra 编译
  • 注意编译器警告
  • 在复杂调试场景中使用 GDB
  • 添加错误检查以处理潜在的运行时问题

总结

在本实验中,你学习了如何编写并运行你的第一个 C 程序,通过多个打印语句增强输出效果,使用变量个性化输出,探索 C 语言中的字符串操作,以及编译和调试 C 程序。你通过实践掌握了 C 编程的基本结构,包括引入库、定义主函数、使用 printf() 显示输出,以及编译和运行程序。你还探索了更高级的概念,例如使用多个打印语句以及处理变量和字符串。

您可能感兴趣的其他 C 教程