为什么我们必须插入3个输入,因为在双引号之前和之后给出空格?scanf函数如何在C中工作?
2
A
回答
1
你scanf()
格式" %d%d "
有不良副作用多余的空格:
第一个是多余的,它指示
scanf()
跳过任何前导空格,但这样已经不为部分的%d
转换。去掉它。尾随的问题导致您的问题:它告诉
scanf()
跳过第二个整数后的任何尾随空格。因此它会继续读取输入,直到它看到不是空白或流结束的东西。也删除它。
请注意,您还应验证scanf()
并使用它们的值转换前2个整数。也总是打印一个尾随的换行符,因为如果不这样做,某些系统不会正确地刷新输出。
#include <stdio.h>
int main(void) {
int a, b;
printf("Enter the values of a and b: ");
if (scanf("%d%d", &a, &b) == 2) {
printf("a=%d b=%d\n", a, b);
}
return 0;
}
0
为什么我们必须插入3个输入作为空格在双引号之前和之后给出?
当您在格式字符串有空白,它会跳过任何数量的输入流中的空格中。因此,scanf()
需要一个非空白*输入才能终止。
scanf从手册:
的空白字符的序列(空格,制表,换行等;见 isspace为(3))。该指令与输入中的任意数量的空白空间 (包括无)匹配。
所以,从格式字符串中删除空格。或者更好,avoid scanf() altogether.
相关问题
- 1. scanf函数在C中如何工作?
- 2. 二scanf函数不工作
- 3. scanf()如何工作?
- 4. scanf()如何工作?
- 5. scanf函数不是在C
- 6. malloc函数如何在C中工作?
- 7. EOF函数如何在c中工作?
- 8. Scanf不能在Objective-C中工作
- 9. scanf函数的C/C++
- 10. printf和scanf如何工作?
- 11. 如何使scanf在if语句目标中工作c
- 12. C++中的sort函数如何工作?
- 13. 如何在c中的32位操作系统中创建scanf()函数?
- 14. 故障与scanf函数(C)
- 15. C来自scanf函数
- 16. 如何在C编程中使用scanf()函数进行打印?
- 17. scanf三次在c不工作?
- 18. scanf()函数不起作用?
- 19. c中的scanf函数返回什么?
- 20. 轮询C Linux函数如何工作?
- 21. c:函数waitpid如何工作?
- 22. Objective-C函数声明如何工作?
- 23. 为什么在使用Win32 ConsoleInput函数时scanf不工作?
- 24. 与scanf函数
- 25. 与scanf函数
- 26. xcode scanf不能正常工作c
- 27. 函数重载在C中工作吗?
- 28. 使函数在C++中正常工作
- 29. 函数不能在c中工作
- 30. C++如何读取__int16_t整数使用scanf函数
@chqrlie,他为什么要接受一个答案?可能他们都不满意。不要问它,那不礼貌。 –
@LuisColorado:OP在这方面的经验很少,我只是在告诉如何接受答案。他的问题在两个答案中都得到完全解决,接受其中一个是预期的行为。我将重新修改评论以使其更加中立。 – chqrlie