2017-10-13 17 views
-3

次のいずれかの方法でファイルを開くと、fopenは正常に動作します。次のように私は、ディレクトリの名前の前に(Windowsの場合や「\」)スラッシュ「/」置く場合ディレクトリの名前の前にスラッシュ '/'を置くとfopenがCで失敗する

fopen("file.txt", "w"); 
fopen("/file.txt", "w"); 
fopen("dir/file.txt", "w"); 

、そしてfopenは(NULLを返す)は失敗します。

fopen("/dir/file.txt", "w"); 

Windows(MSVC)とLinuxの両方で発生します。その理由は何ですか?私は開始スラッシュ '/'を削除する必要がありますか?

+10

あなたはパスの概念を理解していますか?特に*絶対パスと相対パスの違いは? –

+0

シェルで "ls"または "dir"で使用しようとしているパスをテストすると、すぐにあなたの間違いが現在のディレクトリである –

+0

file.txt == file.txtになります。 /file.txt == file.txtは、システムのルートディレクトリにあります。彼らは明らかに同じではありません。 – PSkocik

答えて

0

"。"を追加する必要があります。 「/」

元のインフロント:あなたがで始まる場合fopen("./dir/file.txt", "w");

「/」それは、ルートディレクトリから開始します。それがfopensがnullを返す理由です

+3

これを行わないでください。現在のフォルダは何でもかまいませんが、アプリケーションのディレクトリを指していると想定するのはよくある間違いです。 –

+0

'dir'ではなく'。/ dir'を使う理由はありますか? –

+0

@AndrejsCainikovs私はちょうどユーザーが現在のフォルダからそのファイル(サブフォルダ内)に行く方法に答えました。 – Ran94

関連する問題