1

で指定されたパスからファイルを読み取ることになっている、非常に単純な C コマンド ライン ツールを作成しましたargv[1]OS XでXcodeを使ってデバッグしているので、実行時の作業ディレクトリは読み込みたいファイルとは別のXcodeで作成したディレクトリです。(Xcode は引数を自動的にプラグインするので、それは問題ではありません。) この問題は、私がどのように機能するかを理解していないことに関連していると思われますfopen。パス名を入力すると、作業ディレクトリからの相対パスになりますか? 絶対パスを使用しても機能しますか?

this postthis onethis oneを確認しましたが、この場合は役に立たないようです。

これが私が使用しているコードです-それはmain関数にあります:

for (int i = 0; i < argc; i++)
    printf("arg%i: %s\n", i, argv[i]);

if (argc > 1)
{
    //Open the file specified by the first argument
    system("pwd");
    FILE *file = fopen(argv[1], "r");    //Always returns NULL

    if (file)
        //This isn't ever reached
    else
        printf("%s\n", strerror(errno));        
}

出力は次のようになります。

arg0: /Users/home/Library/Developer/Xcode/DerivedData/VSSequenceAlignment-avlfehlrtqiybygqfgueezoysnyi/Build/Products/Debug/VSSequenceAlignment
arg1: C:/Users/venkateshsivaramanDP/Documents/test/testdoc.txt
/Users/venkateshsivaramanDP/Library/Developer/Xcode/DerivedData/VSSequenceAlignment-avlfehlrtqiybygqfgueezoysnyi/Build/Products/Debug
No such file or directory

スラッシュを使用するように arg1 を変更した後、エラーは変更されていません。確かに、実際の問題に一歩近づいています。

4

2 に答える 2

1

あなたの道は間違っています。Windows パスを使用しています。

実行可能ファイルへのパスを指定して、指定したパスを arg0 と比較します。arg1同じスタイルでなければなりません。

于 2013-09-20T21:51:03.627 に答える
0

はい、絶対パスは で機能しfopenますが、それはあなたの問題ではありません。あなたの問題は の内容にあるarg[1]と思いますC:\Users\home\Documents\test\testdoc.txt.Windowsパスが含まれており、OS Xを使用していると思います.

于 2013-09-20T21:54:35.040 に答える