1
FILE * pFile;
pFile = fopen ("myfile.txt","r");
if (pFile == NULL)
{ some code }

pFile = fopen ("myfile.txt","r")

この場合、何に割り当てられpFileますか? 以来pFile、別の変数のアドレスのみを格納するポインターです。「myfile.txt」は文字列ですよね?それで、pFile =文字列「myfile.txt」を格納する配列のアドレスですか?

4

4 に答える 4

2

オブジェクトを指しFILEます。詳細は実装に依存し、ユーザーコードには影響しません。ただし、通常は、OS固有のファイル処理メカニズムへのさまざまな参照を含む構造になります。

これは不透明なポインタの例です。

于 2013-03-12T09:10:04.897 に答える
1

見てみましょう: http://www.cplusplus.com/reference/cstdio/fopen/

ファイルが正常に開かれた場合、関数は、以降の操作でストリームを識別するために使用できる FILE オブジェクトへのポインターを返します。それ以外の場合は、ヌル ポインターが返されます。

于 2013-03-12T09:10:52.210 に答える
0

FILEこれは、OSがユーザーに代わってファイルにアクセスするために必要なすべての情報を含む構造体へのポインターです。

fopenC++では使用しないでください。代わりに使用する必要がありますstd::ifstream

于 2013-03-12T09:10:05.583 に答える
0

fopen のマニュアルページから:

SYNOPSIS
       #include <stdio.h>

       FILE *fopen(const char *path, const char *mode);

       FILE *fdopen(int fd, const char *mode);

       FILE *freopen(const char *path, const char *mode, FILE *stream);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       fdopen(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE

DESCRIPTION
       The fopen() function opens the file whose name is the string pointed to by path and associates a stream with it.

したがって、返されたポインターは、ファイルへのストリームにアクセスするために使用されます。

于 2013-03-12T09:12:05.017 に答える