简介
在本实验中,你将学习如何在 LabEx 虚拟机(VM)中编写并运行你的第一个 C 程序。你将从简单的 "Hello, World!" 程序开始,然后通过多个打印语句增强输出效果,使用变量个性化输出,探索 C 语言中的字符串操作,最后学习如何编译和调试 C 程序。
在本实验中,你将学习如何在 LabEx 虚拟机(VM)中编写并运行你的第一个 C 程序。你将从简单的 "Hello, World!" 程序开始,然后通过多个打印语句增强输出效果,使用变量个性化输出,探索 C 语言中的字符串操作,最后学习如何编译和调试 C 程序。
在本步骤中,你将在 LabEx VM 中编写并运行你的第一个 C 程序。我们将引导你创建一个简单的 "Hello, World!" 程序,帮助你了解 C 编程的基本结构。
hello.c
。.c
扩展名表示这是一个 C 源代码文件。如果你想了解更多关于 WebIDE 的信息,请查看 WebIDE 指南。
将以下代码复制并粘贴到你的 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
示例输出:
Hello, World!
gcc hello.c -o hello
:将 C 源代码编译为名为 hello
的可执行文件./hello
:运行编译后的程序在本步骤中,你将学习如何通过添加多个打印语句来增强你的 C 程序。这将帮助你了解如何显示更复杂的输出,并在程序中使用多行文本。
hello.c
文件。#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 语言中使用变量来创建更具动态性和个性化的输出。变量允许你在程序中存储和操作数据。
greeting.c
的新文件。或者,你可以在终端中输入 touch greeting.c
来创建文件。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 语言中的基本字符串操作技术,包括字符串连接和使用标准库中的字符串相关函数。
strings.c
的新文件。#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 程序的编译和调试技术,包括理解编译器警告、使用编译标志以及基本的调试策略。
debug.c
的新文件。#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;
| ^
使用调试符号编译:
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
编译在本实验中,你学习了如何编写并运行你的第一个 C 程序,通过多个打印语句增强输出效果,使用变量个性化输出,探索 C 语言中的字符串操作,以及编译和调试 C 程序。你通过实践掌握了 C 编程的基本结构,包括引入库、定义主函数、使用 printf()
显示输出,以及编译和运行程序。你还探索了更高级的概念,例如使用多个打印语句以及处理变量和字符串。