关于EOF,'\0',NUL的问题

pang123hui 2009-10-16 04:31:53
如题:

我是这样理解的,但感觉还不是很懂

1.NULL:这个没什么说的,空指针

2.NUL:这个ASC码里是0,好像C系统没有定义,必须自己用#define NULL 0定义,那么这个NUL一般在那些地方会用到呢?

3.EOF:这个是文件结束符,似乎代表-1,还有就是


char c;

while((c=getchar())!=EOF)
{
.........
}

/*这里的c应该定义为int,为什么?
是因为不能把-1赋给char变量,还是char只有一个字节的大小,无法装的下EOF?
请大家具体说说?
*/

还有就是这个EOF还有什么需要注意的地方,它一般还在什么地方会用到?

4.'\0':这个我知道是每个字符串最后必须的东西,它和NUL有没有什么关系?


我是初学者,谢谢大家
...全文
259 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingz1234 2011-12-21
  • 打赏
  • 举报
回复
EOF不仅仅是文件,文件流结尾一样用的EOF来判断,虽然文件和文件流有联系,但是两个东西概念还是不一样的。
pigniyan 2009-10-16
  • 打赏
  • 举报
回复
1.NULL:这个没什么说的,空指针
空指针,char *p=NULL,说明这个指针没有指向任何地址
2.NUL:这个ASC码里是0,好像C系统没有定义,必须自己用#define NULL 0定义,那么这个NUL一般在那些地方会用到呢?
NUL用于结束一个ASCII字符串
3.EOF:这个是文件结束符,似乎代表-1, 还有就是这个EOF还有什么需要注意的地方,它一般还在什么地方会用到?
EOF用于对文件操作,如:如果要读一个文本文件是否结就可以用while(!feof(fp_read)),如果没有到文件尾的话那么就返回一个0,如果读到了文件末尾就会返回1,这样就结束了这个循环
4.'\0':这个我知道是每个字符串最后必须的东西,它和NUL有没有什么关系?
用于字符串的结束,这是必须要的,这是一个结束串结束的时候系统加进去的,跟NUL没有关系
玖伍叁柒 2009-10-16
  • 打赏
  • 举报
回复
getchar() 返回的是int。 EOF如果是-1,那么如果c为char,是不是那个循环的判断就永远成立了

因为char 永远!= -1

所以c应该是 int

NUL我还没见过。没法说了。不过你对'\0'的理解正确
crystal_wyq 2009-10-16
  • 打赏
  • 举报
回复
因为这个getchar()函数返回的是int整型的,所以c应该定义为int的。
NULL有时候是可以看做0对待的,但是和'\n'的差别就不一样了 '\n'是一个字符串结束的标志,而EOF是一个文件到末尾的标志。
pang123hui 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 pang123hui 的回复:]
如题:

我是这样理解的,但感觉还不是很懂

char c;
while((c=getchar())!=EOF)
{
.........
}
这里的c应该定义为int,为什么?
是因为不能把-1赋给char变量,还是char只有一个字节的大小,无法装的下EOF?
请大家具体说说?
       

'\0':这个我知道是每个字符串最后必须的东西,它和NUL有没有什么关系?


[/Quote]

这两个问题谁回答一下,谢谢
wanjingwei 2009-10-16
  • 打赏
  • 举报
回复


NULL就是指针。

EOF就是一个错误信息。

'\0'则是标准规定的字符串结尾。

没有谁规定NULL是啥,EOF是啥,只是一般NULL是(void *)0,一般EOF是-1。
lzy0001sl 2009-10-16
  • 打赏
  • 举报
回复
EOF就是用于判断文件是否读完的。NULL就是0的另一种说法。
客户机远程维护VNC自动配置方案 ============================================================= 【软件简介】 VNC(Virtual Network Computing,虚拟网络计算)最早是一套由英国剑桥大学ATT实验室在2002年开发的轻量型的远程控制计算机软件,其采用了 GPL 授权条款,任何人都可免费取得该软件。VNC软件主要由两个部分组成:VNC server及VNC viewer。用户需先将VNC server安装在被控端的计算机上后,才能在主控端执行 VNC viewer 控制被控端。 VNC server 与 VNC viewer 支持多种操作系统,如 windows,Linux,MacOS 及 Unix 系列(Unix,Solaris等),因此可将 VNC server 及 VNC viewer 分别安装在不同的操作系统中进行控制。RealVNC 的优越性还在于如果操作系统的主控端计算机没有安装 VNC viewer,也可以通过一般的网络浏览器(如 IE 等)来控制被控端(需要 Java 虚拟机的支持)。 整个 VNC 一般运行的工作流程如下: (1) VNC 客户端通过浏览器或 VNC Viewer 连接至 VNC Server。 (2) VNC Server 传送一对话窗口至客户端,要求输入连接密码(可能为空),以及存取的 VNC Server 显示装置。 (3) 在客户端输入连接密码后,VNC Server 验证客户端是否具有存取权限。 (4) 若是客户端通过 VNC Server 的验证,客户端即要求 VNC Server 显示桌面环境。 (5) 被控端将画面显示控制权交由 VNC Server 负责。 (6) VNC Server 将把被控端的桌面环境利用 VNC 通信协议送至客户端,并且允许客户端控制 VNC Server 的桌面环境及输入装置。 ------------------------------------------------------------- 【特别说明】 JMKT5-SAQF9-SLD2P-NPECM-TEXXA YLYDY-NSK95-KN2BG-KTN9C-92GJA 3XT42-LU2BP-N7JV2-BTSWL-7NKFA 3CJFW-2HLA6-KA44E-ZWG6D-9BT4A 安装方法: 解压RealVNC文件夹,配置到开机命或者系统安装,run.bat增加以下内容 rem 检测客户机还原状态 attrib -r -a -s -h \"d:\\ProtectedC00.sys\" if exist d:\\ProtectedC00.sys del /f /q d:\\ProtectedC00.sys 2>nul 1>nul rem 以下2行制定为非还原状态,安装远程控制服务! if exist d:\\ProtectedC00.sys call RealVNC\\unvnc.bat if not exist d:\\ProtectedC00.sys call RealVNC\\invnc.bat rem 注意:默认为系统账号和密码登陆! ============================================================= 安装批处理: @echo off if not exist \"C:\\Program Files\\RealVNC\" md \"C:\\Program Files\\RealVNC\" xcopy /d/r/y/e/h \"%~dp0*.*\" \"C:\\Program Files\\RealVNC\\\" 1>nul 2>nul set path=%path%;C:\\Program Files\\RealVNC sc query winvnc4|find /i \"指定的服务未安装\"&&call :register && exit sc query winvnc4|find /i \"STOPPED\"&&winvnc4.exe -start && exit exit :register winvnc4.exe -register vncconfig.exe -license JMKT5-SAQF9-SLD2P-NPECM-TEXXA regedit /s RealVNC.reg winvnc4.exe -start :eof 卸载批处理: @echo off if not exist \"C:\\Program Files\\RealVNC\\winvnc4.exe\" goto endvnc sc query winvnc4|find /i \"指定的服务未安装\" 1>nul 2>nul&&goto jumpvnc sc query winvnc4|find /i \"RUNNING\" 1>nul 2>nul&&winvnc4.exe -stop set path=%path%;C:\\Program Files\\RealVNC winvnc4.exe -unregister 1>nul 2>nul :jumpvnc reg delete \"HKEY_LOCAL_MACHINE\\SOFTWARE\\RealVNC\" /f 1>nul 2>nul if \"%~dp0\"==\"C:\\Program Files\\RealVNC\\\" cd.. rd /s /q \"C:\\Program Files\\RealVNC\" 1>nul 2>nul :endvnc 控制批处理: @echo off set path=%path%;C:\\Program Files\\RealVNC sc query winvnc4|find /i \"指定的服务未安装\"&&call :register && exit sc query winvnc4|find /i \"STOPPED\"&&winvnc4.exe -start && exit sc query winvnc4|find /i \"RUNNING\"&&winvnc4.exe -stop && exit :register winvnc4.exe -register vncconfig.exe -license JMKT5-SAQF9-SLD2P-NPECM-TEXXA regedit /s RealVNC.reg winvnc4.exe -start :eof

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧