程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Something About Scanf() In C (1)

Something About Scanf() In C (1)

編輯:關於C語言
 

一. scanf 函數輸入格式中的字符串

scanf 函數輸入格式中也可以含有普通字符串,但他的含義是這些字符必須在輸入中出現,例如:

int num;
scanf("hello %d", &num);

他的含義是首先要求輸入一個hello字符串,然後再輸入一個十進制數。 注意在等待輸入時忽略hello與要輸入的數之間的空格,制表符,回車。

因此這兩種輸入都是正確的: hello 1234 hello1234

二. scanf函數的返回值

程序:

{
  int num, result=0;
  printf("please input the student’s score: ");
  while(result==0) {
    /* 清空輸入緩沖區。 */
    fflush(stdin);
    if(result!=1) printf("Please input a digital score: ");
    result=scanf("%d",&num);
  }
}

一切OK!

三. scanf函數中一個參數的應用

在 scanf 函數中,我們可以使用 %c 來讀取一個字符,使用 %s 讀取一個字符串。 但是讀取字符串時不忽略空格,讀字符串時忽略開始的空格,並且讀到空格為止,因此我們只能讀取一個單詞,而不是整行字符串。因此一般使用 fgets 來讀取一個字符串。

其實 scanf 函數也可完成這樣的功能,而且還更強大。 這裡主要介紹一個參數:%[] ,這個參數的意義是讀入一個字符集合。 [] 是個集合的標志,因此 %[] 特指讀入此集合所限定的那些字符, 比如 %[A-Z] 是輸入大寫字母,一旦遇到不在此集合的字符便停止。 如果集合的第一個字符是"^", 這說明讀取不在 "^" 後面集合的字符,既遇到 "^" 後面集合的字符便停止。注意此時讀入的字符串是可以含有空格的。 Eg: 輸入一個字符串, 這個字符串只含有小寫字符。遇到第一個不是小寫字符時停止, scanf("%[a-z], str); Eg: 想輸入一個字符串, 遇到 "." 停止,可設計如下: scanf("%[^.]", str); 使用這個參數,你可以完成許多強大的功能呦!

通常來講,scanf 函數和他的一些參數並不是很常用,主要是因為:

1. 許多系統的 scanf 函數都有漏洞。 (典型的就是TC再輸入浮點型時有時會出錯)。

2. 用法復雜,容易出錯。

3. 編譯器作語法分析時會很困難,從而影響目標代碼的質量和執行效率。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved