文件结束符EOF 我想问一下:txt文件的文件结束符EOF是不是就是回车键?还...

\u4ec0\u4e48\u53eb"\u4ee5\u6587\u4ef6\u7ed3\u675f\u7b26EOF\u7ed3\u675f\u3002"

windows xp\u4e0a\u597d\u50cf\u662fctrl+z \u5c31\u662f\u4f60\u7684\u7a0b\u5e8f\u4e00\u76f4\u53ef\u4ee5\u8f93\u5165 \u76f4\u5230\u9047\u5230ctr+z\u624d\u7ed3\u675f \u5982\u8f93\u51653\u540e \u8ba1\u7b97\u7ed3\u679c \u7ee7\u7eed\u8f93\u5165 \u76f4\u5230\u4f60\u6309\u4e0bctrl+z\u4e3a\u6b62


\u968f\u624b\u5199\u4e86\u4e2a \u4e0d\u77e5\u9053\u662f\u5426\u7b26\u5408\u8981\u6c42\uff1a
#include
#include
using namespace std;

int main()
{
int length; // \u8981\u6c42\u7684\u957f\u5ea6
do
{
double a=2.0; // \u8bbe\u7f6e\u5206\u5b50
double b=1.0; // \u8bbe\u7f6e\u5206\u6bcd
double temp; // \u505a\u4e2a\u4ea4\u6362\u7528
double sum=0.0; // \u4fdd\u5b58\u548c
cout << "\u8bf7\u8f93\u5165\u60a8\u8981\u8ba1\u7b97\u591a\u5c11\u9879\u7684\u548c: " << endl;
cin >> length;
for (int i=0; i< length; i++)
{
sum+=(a/b);
temp=a;
a+=b;
b=temp;
}
cout << fixed << setprecision(6) << "\u524d" << length
<< "\u9879\u7684\u548c\u662f: " << sum << endl;
}while(!cin.eof()); // \u7528ctrl+z\u7ed3\u675f

return 0;
}

EOF \u662f End Of File \u7684\u7f29\u5199\u3002
\u5728C\u8bed\u8a00\u4e2d\uff0c\u5b83\u662f\u5728\u6807\u51c6\u5e93\u4e2d\u5b9a\u4e49\u7684\u4e00\u4e2a\u5b8f\u3002#define EOF (-1)
\u4eba\u4eec\u7ecf\u5e38\u8bef\u8ba4\u4e3a EOF \u662f\u4ece\u6587\u4ef6\u4e2d\u8bfb\u53d6\u7684\u4e00\u4e2a\u5b57\u7b26\u3002
\u5176\u5b9e\uff0cEOF \u4e0d\u662f\u4e00\u4e2a\u5b57\u7b26\uff0c\u5b83\u88ab\u5b9a\u4e49\u4e3a\u662f int \u7c7b\u578b\u7684\u4e00\u4e2a\u8d1f\u6570\uff08-1\uff09\u3002
EOF \u4e5f\u4e0d\u662f\u6587\u4ef6\u4e2d\u5b9e\u9645\u5b58\u5728\u7684\u5185\u5bb9\u3002
EOF \u4e5f\u4e0d\u662f\u53ea\u8868\u793a\u8bfb\u6587\u4ef6\u5230\u4e86\u7ed3\u5c3e\u8fd9\u4e00\u72b6\u6001\uff08\u8fd9\u79cd\u72b6\u6001\u53ef\u4ee5\u7528 feof() \u6765\u68c0\u6d4b\uff09\uff0c\u5b83\u8fd8\u80fd\u8868\u793a I/O \u64cd\u4f5c\u4e2d\u7684\u8bfb\u3001\u5199\u9519\u8bef\uff08\u901a\u5e38\u53ef\u4ee5\u7528 ferror() \u6765\u68c0\u6d4b\uff09\u4ee5\u53ca\u5176\u5b83\u4e00\u4e9b\u5173\u8054\u64cd\u4f5c\u7684\u9519\u8bef\u72b6\u6001\u3002

哦,这个不是1楼说的那个样子的。eof是文件结束的标志,事实上是-1.可以稍微修改一下楼主的程序来做证明:
while(!in.eof())
{
temp = in.get();
cout<<int(temp)<<endl;
count++;
}
这个时候,会发现在输出count之前输出的最后一个是-1.

但是为什么会输出-1(也就是文件结束符号)呢?in.eof()返回的是in里面的EOF变量,这个变量在in读到文件的结束符时才会变为1。也就是说,只有当in.get()读过了eof的时候,in中的EOF变量才会编程1,in.get()才能返回1。

那为什么按照楼主给的代码里面的in>>temp写法,最后会输出两个c,而和get的输出不一样呢?这个是因为>>在处理的时候,如果碰到读入的是文件结束符,是不会将其写道缓存中的,那样的话,缓存中的字符串还是在读入eof之前的那个字符(这个代码里面也就是'c'),然后再赋值给temp的还是'c'了。

那如何可以比较完美的修改上面的代码呢?对于文件输入流来说,有一个指针指向的是当前读的字符串的下一位,每读一位,指针就往下移一位。就比如一个只有abc的input.txt的文件,我们现在读完了c,那么指针的状态是大致是下面这个样子:
a
b
c
EOF <--

注意,这个时候,in.eof()还不返回1,因为in这个输入流还没有读EOF这个文件结束符,但是in有一个函数peek()是读当前指针指向的这个位置的符号的。那么如果用in.peek() == EOF 来最为判断的标准就比较好了。楼主的例子写成

while(in.peek() != EOF)
{
in>>temp;
cout<<temp<<endl;
count++;
}
就可以了。

顺便说一句,第一段代码里面while的里面再嵌一个while没有必要吧...
还有,无论读还是写,最好都要养成在操作完毕调用close()关闭流的好习惯:)

哦,这个不是1楼说的那个样子的。eof是文件结束的标志,事实上是-1.可以稍微修改一下楼主的程序来做证明:
while(!in.eof())
{
temp=in.get();
cout<<int(temp)<<endl;
count++;
}
这个时候,会发现在输出count之前输出的最后一个是-1.
但是为什么会输出-1(也就是文件结束符号)呢?in.eof()返回的是in里面的EOF变量,这个变量在in读到文件的结束符时才会变为1。也就是说,只有当in.get()读过了eof的时候,in中的EOF变量才会编程1,in.get()才能返回1。
那为什么按照楼主给的代码里面的in>>temp写法,最后会输出两个c,而和get的输出不一样呢?这个是因为>>在处理的时候,如果碰到读入的是文件结束符,是不会将其写道缓存中的,那样的话,缓存中的字符串还是在读入eof之前的那个字符(这个代码里面也就是'c'),然后再赋值给temp的还是'c'了。
那如何可以比较完美的修改上面的代码呢?对于文件输入流来说,有一个指针指向的是当前读的字符串的下一位,每读一位,指针就往下移一位。就比如一个只有abc的input.txt的文件,我们现在读完了c,那么指针的状态是大致是下面这个样子:
a
b
c
EOF<--
注意,这个时候,in.eof()还不返回1,因为in这个输入流还没有读EOF这个文件结束符,但是in有一个函数peek()是读当前指针指向的这个位置的符号的。那么如果用in.peek()==EOF来最为判断的标准就比较好了。楼主的例子写成
while(in.peek()!=EOF)
{
in>>temp;
cout<<temp<<endl;
count++;
}
就可以了。
顺便说一句,第一段代码里面while的里面再嵌一个while没有必要吧...
还有,无论读还是写,最好都要养成在操作完毕调用close()关闭流的好习惯:)

文件里其实是 a b c \n
前面三次依次读入a b c ,后面读入一个回车,temp没有被重新赋值 保留原值 c,此时count=4,然后文件再读下一个字符,遇到EOF while()判断为false,循环退出。

  • eof鏄粈涔堟剰鎬?
    绛旓細eof鍦╟璇█涓〃绀鏂囦欢缁撴潫绗銆傚湪while寰幆涓互EOF浣滀负鏂囦欢缁撴潫鏍囧織锛岃繖绉嶄互EOF浣滀负鏂囦欢缁撴潫鏍囧織鐨勬枃浠讹紝蹇呴』鏄枃鏈枃浠躲傚湪鏂囨湰鏂囦欢涓紝鏁版嵁閮芥槸浠ュ瓧绗︾殑ASCII浠g爜鍊肩殑褰㈠紡瀛樻斁銆侫SCII浠g爜鍊肩殑鑼冨洿鏄0~127锛屼笉鍙兘鍑虹幇-1锛屽洜姝ゅ彲浠ョ敤EOF浣滀负鏂囦欢缁撴潫鏍囧織銆傛。妗堝瓨鍙栨垨鍏跺畠 I/O 鍔熻兘鍙兘浼犲洖绛変簬璞″緛绗﹀彿鍊 ...
  • 涓轰粈涔EOF鏄缁撴潫绗??
    绛旓細EOF鏄竴涓绠楁満鏈锛屼负End Of File鐨勭缉鍐欙紝鍦ㄦ搷浣滅郴缁熶腑琛ㄧず璧勬枡婧愭棤鏇村鐨勮祫鏂欏彲璇诲彇銆傝祫鏂欐簮閫氬父绉颁负妗f鎴栦覆娴併傞氬父鍦ㄦ枃鏈殑鏈鍚庡瓨鍦ㄦ瀛楃琛ㄧず璧勬枡缁撴潫銆傚湪C璇█涓紝鎴栨洿绮剧‘鍦拌鎴怌鏍囧噯鍑芥暟搴撲腑琛ㄧず鏂囦欢缁撴潫绗锛坋nd of file锛夈傚湪while寰幆涓互EOF浣滀负鏂囦欢缁撴潫鏍囧織锛岃繖绉嶄互EOF浣滀负鏂囦欢缁撴潫鏍囧織鐨...
  • eof鏄粈涔堟剰鎬
    绛旓細eof鍦╟璇█涓〃绀鏂囦欢缁撴潫绗銆傚湪while寰幆涓互EOF浣滀负鏂囦欢缁撴潫鏍囧織锛岃繖绉嶄互EOF浣滀负鏂囦欢缁撴潫鏍囧織鐨勬枃浠讹紝蹇呴』鏄枃鏈枃浠躲傚湪鏂囨湰鏂囦欢涓紝鏁版嵁閮芥槸浠ュ瓧绗︾殑ASCII鐮佸肩殑褰㈠紡瀛樻斁鐨勩侲OF鏄竴涓绠楁満鏈锛屼负EndOfFile鐨勭缉鍐欙紝鍦ㄦ搷浣滅郴缁熶腑琛ㄧず璧勬枡婧愭棤鏇村鐨勮祫鏂欏彲璇诲彇銆傝祫鏂欐簮閫氬父绉颁负妗f鎴栦覆娴侊紝閫氬父鍦ㄦ枃鏈...
  • c璇█閲岄潰鐨EOF鐨勭敤娉曞強鎰忎箟
    绛旓細EOF鏄痚nd of file 鐨勭畝鍐欙紝 濡傝鍒版枃浠舵湯灏撅紝鍒欏嚱鏁拌繑鍥炰竴涓 EOF鍊硷紝瀹冩槸涓涓畯瀹氫箟锛屼竴鑸兼槸-1銆備娇鐢ㄧず渚嬪涓嬶細include <stdio.h>int main(){char c;while((c = getchar()) != EOF){putchar(c);}return 0;} 璇存槑锛氬湪Windows涓婃寜CTRL+Z閿紝琛ㄧずEOF銆傛敞鎰忥細EOF铏界劧鏄鏂囦欢缁撴潫绗锛屼絾骞...
  • C璇█ 鏂囦欢鐨缁撴潫绗鏄粈涔堢帺鎰?
    绛旓細C璇█涓紝鏂囦欢缁撴潫绗灏辨槸EOF(End of File)銆備絾杩欏苟涓嶆槸涓涓疄瀹炲湪鍦ㄥ瓨鍦ㄧ殑涓滆タ锛屾槸涓涓爣蹇楋細鑻ヨ鍙栧埌鏂囦欢鏈熬鐨勬椂鍊欙紝鍗虫病鏈夋暟鎹彲渚涜鍙栫殑鏃跺欙紝璇绘枃浠跺嚱鏁帮紙fgets, fgetc绛夛級灏变細杩斿洖EOF鍊笺侰璇█涓紝EOF鏄釜瀹忥紝鍦╯tdio.h鏂囦欢涓繘琛屽畾涔:define EOF (-1)鍗筹細EOF灏辨槸鏁村瀷鏁-1銆傛垜浠啓绋嬪簭...
  • 琛ㄧず鏂囦欢缁撴潫绗鐨勭鍙峰父閲忎负
    绛旓細EOF鏄竴涓绠楁満鏈锛屼负EndOfFile鐨勭缉鍐欙紝鍦ㄦ搷浣滅郴缁熶腑琛ㄧず璧勬枡婧愭棤鏇村鐨勮祫鏂欏彲璇诲彇銆傝祫鏂欐簮閫氬父绉颁负妗f鎴栦覆娴併傞氬父鍦ㄦ枃鏈殑鏈鍚庡瓨鍦ㄦ瀛楃琛ㄧず璧勬枡缁撴潫銆傚湪C璇█涓紝鎴栨洿绮剧‘鍦拌鎴怌鏍囧噯鍑芥暟搴撲腑琛ㄧず鏂囦欢缁撴潫绗锛坋ndoffile锛夈傚湪while寰幆涓互EOF浣滀负鏂囦欢缁撴潫鏍囧織锛岃繖绉嶄互EOF浣滀负鏂囦欢缁撴潫鏍囧織鐨勬枃浠讹紝...
  • C璇█涓EOF鍒板簳鏄粈涔?
    绛旓細EOF鏄痚nd of file鐨勭缉鍐欙紝琛ㄧず"鏂囧瓧娴"锛坰tream锛夌殑缁撳熬銆傝繖閲岀殑"鏂囧瓧娴"锛屽彲浠ユ槸鏂囦欢锛坒ile锛夛紝涔熷彲浠ユ槸鏍囧噯杈撳叆锛坰tdin锛夈侲OF涓嶆槸鐗规畩瀛楃锛岃屾槸涓涓畾涔夊湪澶存枃浠秙tdio.h鐨勫父閲忥紝涓鑸瓑浜-1銆俤efine EOF (-1)闄や簡琛ㄧず鏂囦欢缁撳熬锛孍OF杩樺彲浠ヨ〃绀烘爣鍑嗚緭鍏ョ殑缁撳熬銆備絾鏄紝鏍囧噯杈撳叆涓庢枃浠朵笉涓鏍凤紝鏃犳硶浜...
  • c璇█涓殑EOf鏄粈涔堟剰鎬
    绛旓細DO while not EOF(1)瑙i噴锛氬垽鏂綋eof(1)鐨勫间负true鏃跺仠姝o寰幆銆備娇鐢‥OF鏄负浜嗛伩鍏嶅洜璇曞浘鍦鏂囦欢缁撳熬澶勮繘琛岃緭鍏ヨ屼骇鐢熺殑閿欒銆傜洿鍒板埌杈炬枃浠剁殑缁撳熬锛孍OF鍑芥暟閮借繑鍥濬alse銆傚浜庝负璁块棶Random鎴朆inary鑰屾墦寮鐨勬枃浠讹紝鐩村埌鏈鍚庝竴娆℃墽琛岀殑Get璇彞鏃犳硶璇诲嚭瀹屾暣鐨勮褰曟椂锛孍OF閮借繑鍥濬alse銆
  • 鍦鏂囦欢涓,浠ョ鍙峰父閲EOF浣滀负鏂囨湰鏂囦欢(瀛楃娴佹枃浠)鐨缁撴潫鏍囪,EOF浠h〃鐨...
    绛旓細eof鐨勫兼槸 -1 鍦╯tdio.h鏂囦欢涓畾涔夌殑 define EOF (-1)鑻辨枃鍚箟 END OF FILE include <stdio.h> void main(){ int c;while(scanf("%d",&c)!=EOF){ printf("%d",c);} }
  • C璇█涓変釜缁撴潫绗鏈変粈涔堜笉鍚? EOF 鈥榎0鈥 '\n'
    绛旓細EOF锛圗nd of file锛夋槸鐭/C++閲岄潰鐨勫畯瀹氫箟锛屽叿浣撳畾涔夊紡鏄#define EOF -1锛岃〃绀虹殑鏄鏂囦欢鐨缁撴潫鏍囧織锛屽肩瓑浜-1锛屼竴鑸敤鍦ㄦ枃浠惰鍙栫殑鍑芥暟閲岄潰锛屾瘮濡俧scanf fgetc fgets绛夛紝涓鏃﹁鍙栧埌鏂囦欢鏈鍚庡氨杩斿洖EOF鏍囧織骞剁粨鏉熷嚱鏁拌皟鐢ㄣ'\0'鏄浆涔夊瓧绗︼紝鍊肩瓑浜0锛屼富閬撹鐢ㄥ湪C椋庢牸鍐呭瓧绗︿覆鐨勬湯灏撅紝琛ㄧず瀛楃涓茬粨鏉熸爣蹇...
  • 扩展阅读:后周符太后被谁霸占 ... sizeof包括结束符吗 ... 怎么看文件结束符 ... 文件结束语 ... linux文件结束符 ... word文件结束符 ... 输入3行后用eof结束命令 ... python中出现eof错误 ... c语言以eof结束怎么写 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网