关于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有没有什么关系?


我是初学者,谢谢大家
...全文
248 7 打赏 收藏 转发到动态 举报
写回复
用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的另一种说法。

69,382

社区成员

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

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