0

我对 Python 有点陌生,并试图弄清楚一些事情。我正在尝试编写一个快速脚本来对我编写的 C 代码进行参数测试。

对我来说,当我尝试使用 subprocess.call 来运行我的 C 代码时。C 代码有一个参数,即在代码本身中打开的文件的名称。

例如:

filename = myclass.path + myclass.inputname
subprocess.call(["./code", filename])

这将运行代码,并传递正确的文件名,但 C 代码根本不会从文件中读取任何信息。如果我通过类似的东西:

./code "filename"

到shell,其中“文件名”实际上是我在python中使用打印命令时打印的内容,它工作得很好。

只是为了完整起见,以下是我的 C 代码中相关的行:

in = fopen(argv[1], "r");
fscanf(in, "%s %d %d", variable1, &variable2, &variable3);

知道发生了什么吗?

4

2 回答 2

1

Aside from the obvious, that you are not checking the result of fopen (are you using absolute path names?), your fscanf is wrong. Try:

fscanf(in, "%s %d %d", variable1, &variable2, &variable3);

Another possibility is that the file is not in the format that fscanf expects - it is particularly picky about that and can easily crash your program if it is wrong.

于 2012-06-13T08:09:37.410 回答
0

添加printf("%s\n", argv[1]);到您的 C 代码将让您看到它正在接收什么。文件名是否包含空格?您可能还想检查argv[2]以防万一。

另外,检查来自的返回值fopen()。是NULL吗?(在这种情况下,它无法打开文件)。

于 2012-06-13T03:40:10.067 回答