C または C++ でコーディングしていますか? あなたは選ばなければなりません!
freopen(3)のドキュメントを読み、その結果を使用する必要があります。
The freopen() function opens the file whose name is the string
pointed to by path and associates the stream pointed to by stream
with it. The original stream (if it exists) is closed.
また、C++ I/O ストリーム (例std::cin
および>>
) を C ファイル (例stdin
およびfscanf
...) と混在させないでください。
より多くのドキュメント (ドキュメントを読まずにヘッダー、関数、または型を使用しないでください) と本を読むために数時間を費やすことを強くお勧めします。あなたのコードは残念です。
したがって、Cでコーディングできます。
for(int i=0;i<totalDoc;i++){
FILE*inf = freopen(name[i],"r",stdin); // wrong
if (!inf) { perror(name[i]); exit(EXIT_FAILURE); }
しかし、それは 2 番目の反復では機能しません (stdin
への最初の呼び出しによって閉じられているためfreopen
)。したがって、実際には を使用し、そのファイルから読み取る必要fopen
はありません。ループ本体の最後にあることを忘れないでください。freopen
inf
fclose
for
ところで、C++ でコーディングする場合 (C と C++ のどちらかを選択する必要があります。これらは異なる言語です)、単純にstd::ifstreamを使用します。
for(int i=0;i<totalDoc;i++){
std::ifstream ins(name[i]);
while (ins.good()) {
std::string s;
ins >> s;
doc[i] += s + " ";
};
}
最後に、コーディングする言語と標準 ( C++11はC99とは異なります) を選択し、さらにドキュメントを読みます。また、すべての警告とデバッグ情報を有効にしてコンパイルし (たとえばg++ -std=c++11 -Wall -g
、C++11 コードの場合、またはGCCgcc -std=c99 -Wall -g
を使用している場合は C99 コードの場合) 、 debugger を使用します。