2016-12-15 102 views
0

私のCプログラムをよりダイナミックにしようとしています。 fopen()を使ってファイルをオープンします。明らかに、fopenは絶対パスを読み取っていません。例えば、それは、このパスを読み取ることができない。fopen()の絶対パス

fopen("/Documents/projects/cs50_radio/broadcast/source/deadinside.mp3", "r") 

戻る

をNULL;ただし、

fopen("deadinside.mp3", "r"); 

が期待ポインタ

Iを返します勝った現在の作業ディレクトリから独立しているようなパスを他の場合に読み取る方法がある場合は、

+0

相対パスとはどういう意味ですか? – glant

+4

fopen()は絶対パス指定を使用してファイルを確実に開くことができます。おそらくタイプミス? – JJF

+1

これはWindowsでですか? – kaylum

答えて

2

fopen()は引数として絶対パスを取ることができます。あなたはUNIX/LinuxベースのOSやWindows上で作業していますか?おそらく起こっていることは、あなたが道を間違っていることです。あなたはそれはあなたがしているように見えるマック、にしている場合は、正しいパスは

~/Documents/projects/cs50_radio/broadcast/source/deadinside.mp3 

かもしれません。しかし、あなたが上であればディレクトリにcd'ingとpwd

を入力して確認することができますウィンドウは次のようになります。

C:\Documents\projects\cs50_radio\broadcast\source\deadinside.mp3 
+2

'〜/ whatever/you/have/here'はあなたが探しているパスではありません。現在のユーザのホームディレクトリの値に'〜 'を展開するのは通常シェルによってのみ行われます。/a/path/like/this'はWindowsの現在の作業ディレクトリのボリュームに対して相対的に動く –

+0

私は実際にlinuxで作業していますが、あなたが言ったように、パスの間違いでした。このエラーの原因となった文字列の末尾。 –

+0

現在のディレクトリを文字列で返す関数があります –