使用EOF做终止条件,中止了while却执行了部分while里面的部分语句

C++语言 码拜 9年前 (2016-04-06) 791次浏览
#include<stdio.h>
int main(){
	int n = 0;
	int n1;
	int t=0;
	char ch;
	while (scanf_s("%c", &ch,sizeof(char)) != EOF){
		printf("%c %d ", ch,n);
		if (((int)ch - (int)"0")<10 && ((int)ch - (int)"0")>0)n += (int)((int)ch - (int)"0");
		printf("%d\n", n);
	}
	printf("%d\n", n);
	return 0;
}

这段代码的目的是对char类型的数字进行求和,可是假如不加上if (((int)ch – (int)”0″)<10 && ((int)ch – (int)”0″)>0)的话while中止后n的值会改变

解决方案

80

最后输入后还会留下换行符\n, 假如没有if

引用:
Quote: 引用:

最后输入后还会留下换行符\n (10), 假如没有if , n会得到 “\n” – “0”的结果

问一下这个留下换行符\n (10)是怎么样改变n的,while中止后本人之后没有scanf语句,\n不应该是一直留在输入流中吗

\n会再下一次循环接收进来,只要有\n在缓冲区,就不满足你退出循环的条件
建议单步调试跟踪程序运行便可知


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明使用EOF做终止条件,中止了while却执行了部分while里面的部分语句
喜欢 (0)
[1034331897@qq.com]
分享 (0)