[英]C Programming - Role of spaces in scanf()
我寫了以下代碼:
#include <stdio.h>
int main()
{
int a, b;
printf("Enter values of a and b\n");
scanf(" %d%d ", &a, &b); // Note the two spaces before and after %d
// ^This^
printf("a = %d b = %d\n", a, b);
return 0;
}
程序運行如下:
aps120797@XENON-PC:/mnt/d/Codes/LetUsC$ ./a.out
Enter values of a and b
1
2
3
a = 1 b = 2
我的問題是,為什么要用三個輸入而不是兩個輸入(兩個%d在scanf()中),即使要輸入三個,為什么還要跳過最后一個呢?
格式字符串中的空格表示跳過輸入中的任何空格序列(空格,換行符,制表符),並在到達第一個非白色字符或輸入末尾時停止掃描。 該下一個字符保留在輸入緩沖區中,因此可以由下一個格式運算符(如果有)或下一個輸入操作(如果要在scanf()
之后調用getc()
scanf()
讀取,則它將讀取'3'
字符。
在格式字符串的末尾添加空格時,它會跳過2
之后的換行符,並繼續進行掃描,直到到達下一個非白色字符為止。 因此它必須停在3
之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.