puts/gets 和 scanf/printf 用法上的區別

  • printf()函數

printf()函數是格式化輸出函數, 一般用於向標準輸出設備按規定格式輸出信息。在編寫程序時經常會用到此函數。printf()函數的調用格式爲:
printf("<格式化字符串>", <參量表>);
其中格式化字符串包括兩部分內容: 一部分是正常字符, 這些字符將按原
樣輸出; 另一部分是格式化規定字符, 以"%"開始, 後跟一個或幾個規定字符,用來確定輸出內容格式

  • scanf()函數

scanf()函數是格式化輸入函數, 它從標準輸入設備(鍵盤) 讀取輸入的信息。其調用格式爲:
scanf("<格式化字符串>", <地址表>);
格式化字符串包括以下三類不同的字符;
格式化說明符: 格式化說明符與printf()函數中的格式說明符基本相同。
空白字符: 空白字符會使scanf()函數在讀操作中略去輸入中的一個或多個空白字符
非空白字符: 一個非空白字符會使scanf()函數在讀入時剔除掉與這個非空白字符相同的字符
地址表是需要讀入的所有變量的地址, 而不是變量本身。這與printf()函數完全不同, 要特別注意。各個變量的地址之間同","分開。

  • puts()函數

puts()函數用來向標準輸出設備(屏幕)寫字符串並換行, 其調用格式爲:
puts(s);
其中s爲字符串變量(字符串數組名或字符串指針)。
puts()函數的作用與語printf("%s\n", s)相同

  • gets()函數

gets()函數用來從標準輸入設備(鍵盤)讀取字符串直到回車結束, 但回車符不屬於這個字符串。其調用格式爲:
gets(s);
其中s爲字符串變量(字符串數組名或字符串指針)。
gets(s)函數與scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s)函數輸入字符串時存在一個問題, 就是如果輸入了空格會認爲輸入字符串結束,空格後的字符將作爲下一個輸入項處理, 但gets() 函數將接收輸入的整個字符串直到回車爲止。

  • in a word:

printf scanf是格式化輸入輸出函數:更清晰標準
puts gets是非格式化輸入輸出函數 :編譯後代碼少, 相對佔用內存也小, 從而提高了速度, 同時使用也比較方便

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章