4

私はCに完全に精通しているので、ユーザー入力を取得するとファイルが見つからないのはなぜかと思いましたが、次のコマンドを使用してハードコーディングすると、

const char * fn = "/Users/james/Documents/test.rtf";

うまくいくようですか?

char text[100];
fputs("File location: ", stdout);
fflush(stdout); 
fgets(text, sizeof text, stdin);

FILE *fp = fopen(text,"r");
if( fp ) {
    printf("\nFile Exists");
    fclose(fp);
} else {
    printf("\nFiles doesn't exist");
}

どんな助けも素晴らしいでしょう、あるいは私が明らかに見つけることができなかったいくつかのオンラインソースへの単なるポイントです。:)

4

2 に答える 2

5

fgets行を読み取り、最後の改行文字を保持します。あなたはそれを取り除く必要があります

text[strlen(text) - 1] = '\0';

(もちろん、適切なエラーチェックを行った後。)

于 2012-11-17T16:49:42.377 に答える
0

access()を使用して、ファイルが存在するかどうかを確認できます。アクセスするには、ファイルのパスとモードを指定する必要があります。

アクセスのプロトタイプはintaccess(const char * pathname、int mode);です。

ファイルが存在する場合、access()はゼロを返します。

詳細については、http://linux.die.net/man/2/accessをご覧ください。

于 2012-12-18T09:20:00.957 に答える