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