一个程序处理C程序,完成从编译到生成可执行文件的过程。要求: 1)判断用户输入的文件名是否存在,若不存在,则给出提示。 2)如果编译或连接出错,则将错误信息分别存入出错文件。 3)编译或连接出错后,提示是否要修改源程序,若同意则启动vi编辑器,进入修改状态。
时间: 2024-03-21 09:40:57 浏览: 127
在将一个C源程序转换为可执行程序的过程中.doc
好的,下面是一个处理 C 程序的 shell 程序,实现了你的需求:
```shell
#!/bin/bash
# 获取用户输入的文件名
echo "请输入要编译的 C 文件名(不需要输入后缀):"
read filename
# 判断文件是否存在
if [ ! -f "$filename.c" ]; then
echo "文件 $filename.c 不存在!"
exit 1
fi
# 编译 C 文件
gcc -c $filename.c 2> compile_error.txt
# 判断编译是否出错
if [ $? -ne 0 ]; then
echo "编译 $filename.c 出错!错误信息已存入 compile_error.txt。"
echo "是否要修改源程序?(y/n)"
read modify
if [ "$modify" = "y" ]; then
vi $filename.c
fi
exit 1
fi
# 连接可执行文件
gcc -o $filename $filename.o 2> link_error.txt
# 判断连接是否出错
if [ $? -ne 0 ]; then
echo "连接 $filename.o 出错!错误信息已存入 link_error.txt。"
echo "是否要修改源程序?(y/n)"
read modify
if [ "$modify" = "y" ]; then
vi $filename.c
fi
exit 1
fi
# 提示编译成功
echo "已成功生成可执行文件 $filename。"
```
这个程序做了以下几件事情:
1. 获取用户输入的文件名,并判断文件是否存在。
2. 编译 C 文件,并将错误信息存入 compile_error.txt 文件。
3. 判断编译是否出错,如果出错,提示用户是否要修改源程序,并启动 vi 编辑器。
4. 连接可执行文件,并将错误信息存入 link_error.txt 文件。
5. 判断连接是否出错,如果出错,提示用户是否要修改源程序,并启动 vi 编辑器。
6. 提示用户编译成功。
注意:这个程序只能处理单个 C 文件,如果需要处理多个文件,需要使用其他的方法。
阅读全文