簡體   English   中英

C編程-scanf()中空格的作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM