这是一段代码,用于"反向打印"在两种情况下输入的字符,一种使用scanf,另一种使用getchar。getchar给出正确答案,而scanf显示分段错误
#include <stdio.h>
void reverse()
{
char ch;
scanf("%c",&ch); /*or ch=getchar;*/
if(ch==EOF){
return;
}
reverse();
printf("%c",ch);
}
int main()
{
reverse();
return 0;
}
/*input -- code work output -- krow edoc*/
有人能解释一下错误和幕后发生了什么吗?
谢谢大家!
scanf-分段错误getchar-正确答案
1条答案
按热度按时间yyyllmsg1#
错误测试
当文件结束时,
scanf("%c",&ch)
返回EOF
,而不是将ch
设置为EOF
。对照 * 预期目标 * 1(表示1次转换成功)检查返回值,而不是对照其他可能的返回值(如
EOF
)。