WHU-关于Scanf_s 返回值的Hint
2015-02-02 13:28
190 查看
当输入结束时,试图使用scanf或getchar()进行输入,会返回EOF(stdio.h中的一个常量)。
背景知识:
1. scanf 函数是有返回值的,它的返回值可以分成三种情况
1) 正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b);
如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量);
如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量)。
2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4",返回0。
3) EOF,这是在stdio.h里面定义的常量(通常值为-1),表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复2次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。
所以本题可以使用下面的代码来处理输入:
while (scanf("%d", &n) == 1) /* 或!= EOF , 但前者更好 */
{
; //输入剩余的 8 * n 个数据并进行处理
}
2. 顺便说一下,printf的返回值是输出的字符数,例如,printf("1234")的返回值是4,而printf("1234\n")的返回值是5。
背景知识:
1. scanf 函数是有返回值的,它的返回值可以分成三种情况
1) 正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b);
如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量);
如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量)。
2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4",返回0。
3) EOF,这是在stdio.h里面定义的常量(通常值为-1),表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复2次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。
所以本题可以使用下面的代码来处理输入:
while (scanf("%d", &n) == 1) /* 或!= EOF , 但前者更好 */
{
; //输入剩余的 8 * n 个数据并进行处理
}
2. 顺便说一下,printf的返回值是输出的字符数,例如,printf("1234")的返回值是4,而printf("1234\n")的返回值是5。
相关文章推荐
- 关于scanf的返回值
- 关于scanf返回值
- 关于scanf的返回值
- 关于库函数中scanf函数有返回值以及如果停止运行的方法(windows和linux)
- C语言中关于scanf()函数返回值问题
- 关于scanf()返回值为-1
- 关于eof和scanf返回值
- 关于scanf的返回值
- PAT B1009 说反话 关于scanf和其返回值EOF的应用
- 关于返回值
- 关于线程的参数、“返回值”、及线程的中止
- 关于 存储过程返回值
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 我学员的一个问题及其我对之的解答,关于lr返回值问题
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于Oracle 游标返回值 在C#中的运用(引用自www.souzz.net,个人学习参考用)
- HTML--关于innerText, innerHTML, outerText, outerHTML的返回值
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于检查scanf的返回值