2012-01-30 8 views
4

これはWindowsでCをコーディングする初めてのことです。奇妙なバグが私を狂わせてしまいます。fopenとwindows

私はfopenを使用して.txtファイルを開こうとしていますが、「ファイルが存在しません」というエラーが表示され続けます(これは「許可なし」エラーです)。

私のコードは次のよう(それよりも単純に取得していない)である:

FILE *file; 

if((file=fopen("C:\\Users\\ste\\Desktop\\file.txt", "r"))==NULL) 
{ 
    printf("Cannot open file.\n"); 
    puts(strerror(errno)); 

    getchar(); 
    exit(1); 
} 

私はここで何かが足りないのですか?前もって感謝します!

+3

ファイルは存在し、それを読む権限がありますか? ;) –

+0

'' r "'は読み込み用のファイルを開いています:これは間違いありませんか? – hmjd

答えて

13

私はあなたがWindowsの「拡張機能を隠す」 バグ 機能を有効にしていると思います。したがって、実際に "file.txt"と呼ばれるファイルはエクスプローラに "ファイル"として表示されます。エクスプローラで "file.txt"と表示された場合は、ハードドライブ上の "file.txt.txt"という名前にする必要があります。

+0

+1ハ、それです!彼の無回答に完璧にフィットします! –

1

コード自体は、それが何をしているかを前提とした場合、あなたが望むものであると仮定しても問題ありません。

"r"を指定すると、ファイルが既に存在することが必要です(作成する必要はありません)ので、パスが正しいことを確認する必要があります。デスクトップのパスは正しいですか、別のドライブなどではありませんか?

「ste」以外のユーザーによって実行された場合、またはもちろん、そのファイルパスのアクセス許可が何か変更されてアクセスが妨げられた場合、アクセス権エラーが発生します。

+0

もあります。ファイルが存在し、私は自分のデスクトップにあるファイルにアクセスできるはずです。 :) 私はVisual Studioを介してビルドしているので、それは任意のアクセス権の競合ですか? – STE

-1

私はWindows 7を使用しています。 IDE内からサンプルプログラムを起動すると(Code :: BlocksのCTRL + F10のように)、ファイル拡張子の有無にかかわらず(ig "file"または "file.txt ")。

しかし、コンパイルしたプログラムをコンソール(IDEと関係ない)から起動すると、はファイルが拡張子を持っているかどうかにかかわらずに関係なく動作します。