当我 运行 使用 bash 编程时,C fopen 不工作

C fopen isn't working, when I run program with bash

我有简单的bash脚本

#!/bin/bash

make
./code1_test/test_syn1
./code2_test/test_syn2
./code3_test/test_syn3

test_syn 是我的程序测试。在这些程序中的每一个中,我都使用 fopen 命令打开 .txt 文件。如果我从命令行 运行 程序,我有一个正确的测试输出,但是当我使用这个 bash 脚本时,fopen return me NULL,所以我无法打开我的 . txt 文件,我无法 运行 测试。为什么会发生这种情况,我该如何解决?

如果您使用 fopen() 和相对路径,您应该从其目录执行脚本。试试这个:

#!/bin/bash
make
(cd code1_test/ && exec ./test_syn1)
(cd code2_test/ && exec ./test_syn2)
(cd code3_test/ && exec ./test_syn3)

否则您的程序会尝试在您的 运行 您的 Bash 脚本所在的目录中打开您的 .txt,这不是您想要的。

如果您希望能够从任何地方 运行 您的程序,您可以在 fopen().

时尝试不使用相对路径