2012年5月25日 星期五

scanf() 的小秘密

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char a[100];
    scanf("%s", a);
    printf("%s\n", a);
    system("pause");
    return 0;
}


以上是一個簡單的程式,也就是讓使用者輸入一段文字後,再將它輸出。
那,這有什麼特別的呢?

試試看輸入"This is a book."吧!
輸出結果竟是"This(換行)"!發生什麼事了呢?

實際上,scanf()這個函數不會接收「空格」、「Tab」以及「換行」這些符號。
那怎麼辦呢?你可以使用gets()函數,它可以接收包含空格的整行文字。

範例:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char a[100];
    gets(a);  //讀取包含空白的整行文字
    printf("%s\n", a);
    system("pause");
    return 0;
}

補充:
如果硬是要使用scanf()的話,就這樣寫吧。

char a[100];
scanf("%[^\n]", a);  //讀取除了換行以外的所有字元

沒有留言:

張貼留言