0

私はPythonが初めてで、何かを理解しようとしています。私が書いた C コードのパラメーター テストを実行する簡単なスクリプトを作成しようとしています。

C コードを実行するために subprocess.call を使用しようとすると、問題が発生します。C コードには、コード自体で開かれるファイルの名前である引数が 1 つあります。

例えば:

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

これによりコードが実行され、正しいファイル名が渡されますが、C コードはファイルから情報をまったく読み取りません。次のようなものを渡すと:

./code "filename"

ここで、「ファイル名」は、Pythonでprintコマンドを使用したときに実際に出力されるものであり、問​​題なく動作します。

完全を期すために、私の 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

C コードに追加printf("%s\n", argv[1]);すると、何を受け取っているかがわかります。ファイル名にスペースが含まれていますか? 場合に備えて確認するargv[2]こともできます。

また、 からの戻り値を確認してくださいfopen()。ですかNULL?(この場合、ファイルを開くことができません)。

于 2012-06-13T03:40:10.067 に答える