我有關於文件輸出/輸入的問題。 這裏是我的程序:正在讀取和寫入文件C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
FILE * out;
out=fopen("tmp.txt", "w");
for(int i=0; i<256; i++)
{
fprintf(out, "%c", char(i));
}
fclose(out);
FILE * in;
in=fopen("tmp.txt", "r");
while(!feof(in))
{
char a=fgetc(in);
cout<<int(a)<<endl;
}
fclose(in);
}
這裏是輸出:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-1
爲什麼這麼快就停止? 這是否意味着char(26)
是EOF
? 我怎麼能寫入文件(任何類型)來克服這個問題?
我正在尋找的是一種自由將值(任何範圍,可以是char
,int
或其他)寫入文件然後閱讀它的方法。
除了無償使用'std :: cout'和(濫用)'std :: endl'這是一個C問題。改變您的控制檯輸出使用'printf'並放入一個C標籤;你會得到更好的答案。在C++中,文件I/O通過'std :: ifstream'和'std :: ofstream'完成。 –
對於C++中的文件I/O,您可能需要使用[std :: ifstream和std :: ofstream](http://www.cplusplus.com/doc/tutorial/files/) – HatsuPointerKun
您不應該使用'char '返回'fgetc'。它的返回類型是「int」。你返回'-1'意味着你讀的字符很可能是字符'0xFF'。 'EOF'通常被定義爲整數'-1'。你不能以當前的形式區分它們。 – Lanting