字符接受与断言宏
时间:2008-05-14 10:37:27
来源:论坛整理 作者: 编辑:chinaitzhe
下面函数中的断言有什么问题?
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ /* getline ─── 将一个以\n 结尾的行读入缓冲区中*/ void getline(char* pch) { int ch; /* ch“必须”是int */ do ASSERT( (ch = getchar()) != EOF ); While( (*pch =ch) != ‘\n’ ) }
解答:
3)使用该断言的问题是测试包含了应保留在函数非调试版本中代码。非调试代码将进
入一个无限循环,除非在执行do 循环中,ch 碰巧等于执行符。所以函数应写成如下形式:
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ void getline( char* pch ) { int ch; /* ch 必须是int 类型*/ do { ch = getchar(); ASSERT( ch != EOF ); } while( ( *pch = ch ) != ‘\n’); }
我看不太懂。ch != EOF?这里的EOF是什么?读文件的时候文件尾叫EOF,但是输入字符的时候不太清楚。对他的解答也完全看不懂,希望高手能够用自己的理解解释一下。
谢谢!
网友回复:输入字符的时候不太清楚
按ctrl z 时
网友回复:在release版本中ASSERT宏所包含的代码将被忽略
会变成:
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ do ; While( (*pch =ch) != ‘\n’ )
是一个无限循环
EOF是输入流的结束符,包括读文件,I/O等
网友回复:谢谢两位,呵呵,两位答案一综合就是完美答案了。
关键字:字符,接受,断言,
上一篇:关于实现梦想的途径
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面