2017-02-19 7 views
2

これはなぜ動作しないのか分かりません。私はコメント行から//を削除した場合、エラーコンパイラが与えるなぜfopenは機能しませんか?

#include <stdio.h> 

int main(void) { 
    FILE *in, *out; 
    // char *FULLPATH = "C:\\Users\\Jay\\c\\workspace\\I-OFiles\\in.txt\\ "; 
    // char *mode = "r"; 
    // in = fopen(FULLPATH, mode); 
    // 
    // if (in == NULL) { 
    //  perror("Can't open in file for some reason\n"); 
    //  exit (1); 
    // } 

    out = fopen("C:\\Users\\Jay\\c\\workspace\\I-OFiles\\out.txt", "w"); 

    if (out == NULL) { 
     perror("Can't open output file for some reason \n"); 
     exit(1); 
    } 

    fprintf(out, "foo U"); 
    fclose(in); 
    fclose(out); 
    return 0; 
} 

です:無効な引数

(私は他のすべてを読んで、なぜ私は理解していませんスレッド関連、何もありません)。 実際にはout.txtファイルを作成するので、パスのスペルが間違っているようには見えません。

+8

'' \\ in.txt - '> –

+3

in.txt'あなたが実際に' in.txt'というディレクトリを持っていますか? – melpomene

+0

ありがとう@SouravGhosh、もう何を試していいのかわかりませんでした – newbie

答えて

3

in.txtの後にバックスラッシュを削除します。

1

入力ファイル名の偽のようだ:

"C:\\Users\\Jay\\c\\workspace\\I-OFiles\\in.txt\\ " 

ファイル名が1つだけのスペース" "あるとin.txtはおそらくディレクトリではありません。

変更するコード:

const char *FULLPATH = "C:\\Users\\Jay\\c\\workspace\\I-OFiles\\in.txt"; 

好ましく:フォワードとしてより良い移植性のため

const char *FULLPATH = "C:/Users/Jay/c/workspace/I-OFiles/in.txt"; 

は、WindowsならびにUNIXで仕事をスラッシュ。

さらに、fopen()がファイルを開くことができなかった理由について、より多くの情報を提供することは容易である。ここで

が変更されたバージョンである:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(void) { 
    FILE *in, *out; 

    in = fopen("C:/Users/Jay/c/workspace/I-OFiles/in.txt", "r"); 
    if (in == NULL) { 
     perror("Cannot open input file"); 
     exit(1); 
    } 

    out = fopen("C:/Users/Jay/c/workspace/I-OFiles/out.txt", "w"); 
    if (out == NULL) { 
     fclose(in); 
     perror("Cannot open output file"); 
     exit(1); 
    } 

    fprintf(out, "foo U"); 
    fclose(in); 
    fclose(out); 
    return 0; 
} 
+0

'perror()'の呼び出しは 'strerror(errno)'の結果を表示された出力に含めます。プログラムに ' errno.h'ヘッダファイルと 'string.h'ヘッダファイル – user3629249

+0

関数' exit() 'は' stdlib.h'ヘッダファイルにあります。これはきれいにコンパイルされません – user3629249

+0

ファイル名 – user3629249

関連する問題