📄 关于 eof 的问题_秋幸.htm
字号:
#ft A:visited {
LETTER-SPACING: normal
}
</STYLE>
<DIV id=usrbar><NOBR>
<SCRIPT> var myref = encodeURI("http://hi.baidu.com/yangqiuxing/blog/item/bfee8716bd736153f2de32e5%2Ehtml");</SCRIPT>
<A href="http://www.baidu.com/" target=_blank>百度首页</A> | <A
href="http://hi.baidu.com/" target=_blank>百度空间</A>
<SCRIPT language=JavaScript>
document.write(" | <a href='http://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u="+myref+"'>登录</a>");
</SCRIPT>
</NOBR></DIV>
<DIV id=main align=left><!--[if IE]>
<SCRIPT>
var objmain = document.getElementById("main");
function updatesize(){ var bodyw = window.document.body.offsetWidth; if(bodyw <= 790) objmain.style.width="772px"; else if(bodyw >= 1016) objmain.style.width="996px"; else objmain.style.width="100%"; }
updatesize(); window.onresize = updatesize;
</SCRIPT>
<![endif]-->
<DIV id=header>
<DIV class=lc>
<DIV class=rc></DIV></DIV>
<DIV class=tit><A class=titlink
title="yang667455的空间 http://hi.baidu.com/yangqiuxing"
href="http://hi.baidu.com/yangqiuxing">秋幸</A></DIV>
<DIV class=desc>秋幸</DIV>
<DIV id=tabline></DIV>
<DIV id=tab><A href="http://hi.baidu.com/yangqiuxing">主页</A><A class=on
href="http://hi.baidu.com/yangqiuxing/blog">博客</A><A
href="http://hi.baidu.com/yangqiuxing/album">相册</A><SPAN>|</SPAN><A
href="http://hi.baidu.com/yangqiuxing/profile">个人档案</A> </DIV></DIV>
<DIV class=stage>
<DIV class=stagepad>
<DIV style="WIDTH: 100%">
<TABLE class=modth cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=modtl width=7> </TD>
<TD class=modtc noWrap>
<DIV class=modhead><SPAN class=modtit>查看文章</SPAN></DIV></TD>
<TD class=modtc noWrap align=right></TD>
<TD class=modtr width=7> </TD></TR></TBODY></TABLE>
<DIV class=modbox id=m_blog>
<DIV class=tit>关于 EOF 的问题</DIV>
<DIV class=date>2007-08-17 15:57</DIV>
<TABLE style="TABLE-LAYOUT: fixed">
<TBODY>
<TR>
<TD>
<DIV class=cnt>
<P>以下这段程序是经典书《The C Programming Language Second
Editon》中的一个例子,编译无错,可执行的时候无法停止循环。</P>
<P><BR>#include <stdio.h><BR>/* 统计输入中的行数 */<BR>main()<BR>{ <BR>int
c;<BR>int nl=0;<BR>while( (c=getchar()) != EOF )<BR>{<BR>if(c ==
'\n')<BR>{<BR>++nl;<BR>}<BR>}<BR>printf("%d\n",nl);<BR>}</P>
<P></P>
<P>第一.关于循环终止。在很多书籍中都存在这样的循环语句:<BR>while ( getchar() != EOF )
{….}<BR>很多人不明白这个EOF为何物?具体如何操作?以至于让上面的语句变成了无限循环。呵呵,其实EOF是文件结束符(end of
file),在第七章有说明,其为系统常量。大多数情况下,值为-1,当然你在终端输入-1,循环并未结束,why?how to
do?恩,你在《c专家编程》里会了解到,c的第一批使用者都是系统设计者和编译器设计者。在他们的理念里,信息往往以文件为单位的。这个标志只是文件结束的状态,一般不由用户提供。键盘等输入端在os中是个极其特殊的文件,需要用户显式标志文件结束。说是系统常量,当然有着系统依赖性(因此说EOF的值就是-1,也是不正确的),因此不同的系统标志方式就完全不同。Windows下是ctrl+z。linux下是ctrl+D.,这是从系统的角度来说。另外更直接的原因是,为了保证程序的完整性,EOF应该排除在可输入字符之外,这是从语言的根源上来考虑的。<BR></P>
<P>先ctrl+z,然后回车<BR></P></DIV></TD></TR></TBODY></TABLE><BR>
<DIV class=opt><A title=查看该分类中所有文章
href="http://hi.baidu.com/yangqiuxing/blog/category/ѧϰ">类别:学习</A> | <A
title=将此文章添加到百度搜藏
onclick="window.open('http://cang.baidu.com/do/add?it='+encodeURIComponent('关于 EOF 的问题'+'_百度空间')+'&iu='+encodeURIComponent(location.href)+'&fr=sp#nw=1','_s','scrollbars=no,width=600,height=450,right=75,top=20,status=no,resizable=yes'); return false;"
href="http://cang.baidu.com/do/add" target=_blank>添加到搜藏</A> | 浏览(<SPAN
id=result></SPAN>) </DIV>
<DIV class=line></DIV>
<DIV id=in_reader>
<DIV class=tit>最近读者:</DIV>
<SCRIPT>
var g_spAnnony=true;
var g_read=[
["horus117","e671686f7275733131373e02","horus117"],
["hibeta","af58636873666973682f00","chsfish"],
["%CE%A8%D2%BB%B1%F8%C1%D9%B3%C7%CF%C2","5c09cea8d2bbb1f8c1d9b3c7cfc21803","唯一兵临城下"],
["alfonsolee","30e0616c666f6e736f6c65659c00","alfonsolee"],
["cracking","282ea1efccabeabbb7fcf4cba1efff00","★太昊伏羲★"],
{}
];
g_read.length=g_read.length-1;
var _rh1="";
var _rh2="";
function wrreader(){
_rh1 += '<table width="100%" ><tr>';
_rh2+='<tr>';
if(g_spAnnony){
_rh1+='<td align="center" width="10%" ><img border="0" width="55" height="55" src="http://img.baidu.com/hi/img/portraitn.jpg"></td>';
_rh2+='<td> </td>';
if(g_read.length>0){
_rh1+='<td align="left" width="12%">';
}else{
_rh1+='<td align="left" width="100%">';
}
_rh1+="<a href='http://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u="+myref+"' target='_self'>登录</a>后,您就出现在这里。</td>";
_rh2+='<td> </td>'
}
if(g_read.length==0){
if(!g_spAnnony){
_rh1+='<td align=left width="100%">最近还没有登录用户看过这篇文章……</td>';
_rh2+='<td> </td>';
}
}else{
for(i=0,len=g_read.length;i<len;i++){
_rh1+='<td align="center" valign="bottom" width="10%" class="user"><a href="/'+g_read[i][0]+'" target="_blank"><img border="0" src="http://himg.baidu.com/sys/portraitn/item/'+g_read[i][1]+'.jpg"></a></td>';
_rh2+='<td align="center" valign="top" class="user"><a href="/'+g_read[i][0]+'" target="_blank">'+g_read[i][2]+'</a></td>';
}
}
_rh1+='<td width="100%"></td></tr>';
_rh2+='<td></td></tr></table>';
document.write(_rh1+_rh2);
}
wrreader();
</SCRIPT>
</DIV>
<DIV class=line></DIV>
<SCRIPT language=JavaScript>
allkey=allkey+"c1a4e219f7ed2c7adbb4bd8f_bfee8716bd736153f2de32e5_";
</SCRIPT>
<DIV id=in_comment><A name=comment></A>
<DIV class=tit>网友评论:</DIV>
<SCRIPT>
function writecmt(type,id,cmtname,cmturl,portraitId){
var html1="";
if(type==1){
html1="<a name='"+id+"' href='"+cmturl+"' target='_blank' title='"+cmturl+"'><img border='0' src='http://himg.baidu.com/sys/portraitn/item/"+portraitId+".jpg'><br>"+cmtname+"</a>";
}else{
if(cmtname=="" || cmtname=="匿名网友"){
if(cmturl==""){
html1="<a name='"+id+"'>匿名网友</a>";
}else{
html1="<a name='"+id+"' href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a>";
}
}else{
if(cmturl==""){
html1="<div class='f14' style='display:inline'>网友:<a name='"+id+"'>"+cmtname+"</a></div>";
}else{
html1="<div class='f14' style='display:inline'>网友:<a name='"+id+"' href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a></div>";
}
}
}
document.write(html1);
}
</SCRIPT>
<DIV id=page></DIV></DIV>
<DIV id=in_send>
<FORM id=popFormSubmit name=form1 onsubmit="return checkcmtform()"
action=/yangqiuxing/commit method=post><INPUT type=hidden value=8 name=ct>
<INPUT type=hidden value=1 name=cm> <INPUT type=hidden
value=bfee8716bd736153f2de32e5 name=spBlogID>
<SCRIPT language=JavaScript>
document.write("<input type='hidden' name='spRefURL' value='"+window.location.href+"'>");
</SCRIPT>
<DIV class=tit>发表评论:</DIV>
<TABLE cellSpacing=5 cellPadding=0 width=620 border=0>
<TBODY>
<TR>
<TD class=f14>姓 名:</TD>
<TD><INPUT id=spBlogCmtor style="WIDTH: 220px" onfocus=hidErr(1);
tabIndex=1 maxLength=49 onchange="checkname('spBlogCmtor')"
name=spBlogCmtor>
<SCRIPT>
document.write(" <a href='http://passport.baidu.com/?reg&tpl=sp&return_method=get&skip_ok=1&u=http://hi.baidu.com/sys/reg/' target='_blank'>注册</a>");
document.write(" | <a href='http://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u="+myref+"'>登录</a>");
</SCRIPT>
<DIV id=nmerror style="DISPLAY: none">*姓名最长为50字节</DIV></TD></TR>
<TR id=1_err style="DISPLAY: none">
<TD> </TD>
<TD>
<DIV class=error id=1_err_con></DIV></TD></TR>
<TR>
<TD class=f14>网址或邮箱:</TD>
<TD><INPUT id=spBlogCmtURL style="WIDTH: 360px" onfocus=hidErr(2);
tabIndex=2 maxLength=128 onchange="checkeandu('spBlogCmtURL')"
name=spBlogCmtURL> (选填)</TD>
<SCRIPT>
G("spBlogCmtor").value="";
G("spBlogCmtURL").value="";
</SCRIPT>
</TR>
<TR id=2_err style="DISPLAY: none">
<TD> </TD>
<TD>
<DIV class=error id=2_err_con></DIV></TD></TR>
<TR>
<TD class=f14 vAlign=top>内 容:</TD>
<TD><TEXTAREA id=spBlogCmtText style="WIDTH: 520px; HEIGHT: 155px" onfocus=hidErr(3); tabIndex=3 name=spBlogCmtText></TEXTAREA>
<SCRIPT>
G("spBlogCmtor").value=G("spBlogCmtor").defaultValue;
G("spBlogCmtText").value="";
</SCRIPT>
</TD></TR>
<TR id=3_err style="DISPLAY: none">
<TD> </TD>
<TD>
<DIV class=error id=3_err_con></DIV></TD></TR>
<TR id=vercode>
<TD class=f14 vAlign=top>验证码:</TD>
<TD vAlign=top><INPUT type=hidden
value=9D37ACD53D83B5FD37A6B4FAD59437B32BACB7C0855749D788B479ECAAB1EFACE173C4DDB109E47BF9BE28BFA257F6566F27126A08E417B5660D8F779A033A98
name=spVcode> <INPUT id=spVerifyKey tabIndex=4 maxLength=4 size=6
name=spVerifyKey autocomplete="off">请输入下图中的四位验证码,字母不区分大小写。<BR>
<SCRIPT language=JavaScript>
var imgsrc="http://post.baidu.com/cgi-bin/genimg?9D37ACD53D83B5FD37A6B4FAD59437B32BACB7C0855749D788B479ECAAB1EFACE173C4DDB109E47BF9BE28BFA257F6566F27126A08E417B5660D8F779A033A98";
document.write("<img id='verifypic' src='"+imgsrc+"' width='120' height='40'>");
function newverifypic(){
document.getElementById("verifypic").src = imgsrc +"&t="+ Math.random();
}
</SCRIPT>
<A title=看不清左边的字符 href="javascript:newverifypic();">看不清?</A> </TD></TR>
<TR>
<TD class=f14 vAlign=top> </TD>
<TD class=f14 vAlign=top><INPUT id=btn_ok tabIndex=5 type=submit value=发表评论 name=btn_ok></TD></TR></TBODY></TABLE></FORM></DIV><BR></DIV>
<TABLE height=8 cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=modbl width=7> </TD>
<TD class=modbc> </TD>
<TD class=modbr width=7> </TD></TR></TBODY></TABLE></DIV></DIV></DIV></DIV>
<SCRIPT language=javascript>
<!--
var hstr="/yangqiuxing/brwstat?key1=1";
document.write("<script src='"+hstr+"&key2="+allkey+"'><\/script>");
//-->
</SCRIPT>
<BR>
<CENTER>
<DIV id=ft>©2007 Baidu</DIV></CENTER>
<SCRIPT>
if(document.getElementById("m_blog"))
{
var imgarray = document.getElementById("m_blog").getElementsByTagName('img');
var imgw = document.getElementById("m_blog").offsetWidth;
imgw =imgw-40;
for(var i=0; i<imgarray.length; i++){
if(imgarray[i].className=="blogimg" && imgarray[i].width>=imgw) imgarray[i].width=imgw;
}
}
</SCRIPT>
</CENTER><IMG style="DISPLAY: none" src="关于 EOF 的问题_秋幸.files/c.htm">
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -