2007年3月28日 星期三

scanf(" ") - 壹

之前在mis99板看到助教討論 scanf() 內加上空白之功用,覺得還挺有趣的,自己也來玩玩看,

程式碼壹:
#include <stdio.h>

int main(void)
{
int n=0;
char string[3];

printf("Please input:\n");

scanf("%c %c %c",&string[0],&string[1],&string[2]);
/*%c之間有空白' '*/
for(n=0;n<3;n++){
printf("(%d)%c ",n,string[n]);
}

system("PAUSE");
return 0;
}

Case1:
  • 輸入:abc
  • 輸出:(0)a (1)b (2)c
Case2:
  • 輸入:_a_b_c ( _代表空白 )
  • 輸出:(0) (1)a (2)b
Case3:
  • 輸入:a_______b____c
  • 輸出:(0)a (1)b (2)c
Case4:
  • 輸入:a___ (按enter跳行)
____b
______c
  • 輸出:(0)a (1)b (2)c

因此可以得知,scanf("")內加上空白代表跳過輸入進來的空白字元(whitespace)

直到碰上下一個輸入,Case2中,scanf()首先取得了一個空白字元,並存入陣列內,接

下來便忽略剩餘部分,直到碰上b,c

沒有留言: