1. 程式人生 > >scanf與printf的返回值。

scanf與printf的返回值。

1. scanf 函式是有返回值的,它的返回值可以分成三種情況
  1) 正整數,表示正確輸入引數的個數。例如執行 scanf("%d %d", &a, &b);
      如果使用者輸入"3 4",可以正確輸入,返回2(正確輸入了兩個變數);
      如果使用者輸入"3,4",可以正確輸入a,無法輸入b,返回1(正確輸入了一個變數)。
  2) 0,表示使用者的輸入不匹配,無法正確輸入任何值。如上例,使用者如果輸入",3 4",返回0。
  3) EOF,這是在stdio.h裡面定義的常量(通常值為-1),表示輸入流已經結束。在Windows下,使用者按下CTRL+Z(會看到一個^Z字元)再按下回車(可能需要重複2次),就表示輸入結束;Linux/Unix下使用CTRL+D表示輸入結束。


所以可以使用下面的程式碼來處理輸入:
while (scanf("%s %c %c", str, &oldchar, &newchar) == 3) /* 或!= EOF , 但前者更好 */
{
    ; //處理
}

2. 為什麼前面 scanf 的格式串裡面,%s和%c中間需要空格呢?
  那是因為如果沒空格的話。。。oldchar輸入的就是空格了= =.

3. 順便說一下,printf的返回值是輸出的字元數,例如,printf("1234")的返回值是4,而printf("1234\n")的返回值是5。

相關推薦

scanfprintf返回

1. scanf 函式是有返回值的,它的返回值可以分成三種情況  1) 正整數,表示正確輸入引數的個數。例如執行 scanf("%d %d", &a, &b);       如果使用者輸入"3 4",可以正確輸入,返回2(正確輸入了兩個變數);      如果使用者輸入"3,4",可以正確輸入

handlerAdapter方法返回的處理

com bin can sep 不為 tex 找到 clu ctype 前提:處理器方法被調用並返回了結果 public void invokeAndHandle(ServletWebRequest webRequest, ModelAndVie

C語言scanf函數返回小記

失敗 code class 發現 用戶輸入 什麽 stdio.h 接受 例子 scanf scanf是C標準庫stdio裏面定義的用於獲取用戶輸入的函數,具體的介紹可以在CppReference上看到。scanf的返回值是已經成功賦值的變量個數,也就是說在 scanf(&q

Python 函式函式的定義函式的引數、返回函式巢狀

  demo.py(函式定義): # say_hello() # 不能在定義函式之前呼叫函式 # Python 直譯器知道下方定義了一個函式 def say_hello(): """函式的說明文件""" print("hello 1") print("

詳解mybatis的create,retrieve,delete,update返回

首先是select User user = new User(); user.setName("l2"); user.setPassword("444"); int i = userMapper.addUser(user);

使用儲存過程並返回返回的獲得方法

使用儲存過程並返回值與及返回值的獲得方法 CREATE TABLE [dbo].[Order]( [o_id] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [o_buyerid] [int] NOT NULL ) 1.OUPU

究極難題 :一個執行10秒以上至無窮的呼叫函式,成功後有返回在多工執行緒中怎麼實現呼叫不卡住該執行緒?

究極難題 :一個執行10秒以上至無窮的呼叫函式,成功後有返回值。在多工執行緒中怎麼實現呼叫不卡住該執行緒? Note:一旦呼叫函式,中途無法取消。 思路一:讓其執行在獨立執行緒內。加超時時間。 1. 在超時時間內函式有返回值,則函式執行結束。則獨立執行緒結束。 2. 在超時時

scanfprintf用法詳解

一、scanf家族 1、scanf家族的原型 int scanf(char const *format,...); int fscanf(FILE *stream,char const *format,...); int sscanf(char const *buffer,char const *format

scanfprintf轉換說明符區別

【問題描述】 scanf函式與printf函式的轉換說明符幾乎一致,都可以使用%c,%d,%e,%f,%g,%a,%p,%o等。那麼他們的轉換說明符有何區別? 【解析】 printf函式中將%f,%e,%E,%g,%G同時用於float型別和double型別,而scanf只

建立一個數組, 實現函式init()初始化陣列, 實現empty()清空陣列、,實現reverse()函式完成陣列元素的逆置自己設計函式的引數,返回

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> void init(int arr[], int len) { for (int i = 0; i < len; ++i)

Scanf函式的返回

 1. scanf 函式是有返回值的,它的返回值可以分成三種情況   1) 正整數,表示正確輸入引數的個數。例如執行 scanf("%d %d", &a, &b);       如果使用者輸入"3 4",可以正確輸入,返回2(正確輸入了兩個變數);  

printf返回是什麼?

一個有意思的問題,很少有人會關注這個; 以前遇到過這個問題,忘記了,現在記錄下,printf返回值是打印出來字元的個數; #include <stdio.h> int main() {

JS中new操作符函式返回return

預設情況        預設情況下函式的返回值為undefined(即沒有顯示地定義返回值的話),但是建構函式比較例外,new建構函式在沒有return的情況下預設返回新建立的物件。但是在有顯示返回值的情況下,如果返回值為基本資料型別的話(string,number,b

scanf 函式的返回

1. scanf 函式是有返回值的,它的返回值可以分成三種情況 1) 正整數,表示正確輸入引數的個數。 例如執行 scanf(“%d %d”, &a, &b); 如果使用者輸入”3 4”,可以正確輸入,返回2(正

scanf函式的返回問題

1.scanf()函式有返回值且為int型。 2.scanf()函式返回的值為:正確按指定格式輸入變數的個數;也即能正確接收到值的變數個數。 scanf("%d%d", &a, &

比較scanf返回printf返回

scanf 函式 :1.scanf()函式有返回值且為int型。2.scanf()函式返回的值為:正確按指定格式輸入變數的個數;也即能正確接收到值的變數個數。例如: #include<stdio.h>       int main()       {       

方法的重寫重載的區別(OverrideOverload)重載的方法是否可以改變返回的類型

改變 父類 div 之間 如果 如同 java 調用 ava 方法的重寫(Override)與重載(Overload)的區別。重載的方法是否可以改變返回值的類型?【基礎】 解釋: 方法的重寫overriding和重載Overloading是Java多態性的不同表現。 1、重

獲取瀏覽器語言的完美方案(各瀏覽器對 navigator 物件中幾個語言相關的屬性的返回存在差異)

標準參考 無 問題描述 各瀏覽器對 navigator 物件中幾個與語言相關的屬性(language、userLanguage、browserLanguage、 systemLanguage)的返回值存在很大的差異。 造成的影響 由於不同瀏覽器對這幾個屬性的返回值有很

stl中的transform()註意其for_each的不同點(有無返回

bind2nd n) oid highlight tlist _each pre stream gin #include<iostream> using namespace std; #include"vector" #include"algorithm" #

scanf返回問題

環境 net 如果 段錯誤 返回值 緩沖 判斷 ron png 閑著沒事看C primer plus,看到書中對於scanf輸入的判斷,常用如下方法: 此時它將返回1視為我輸入成功,如果不為1則視為輸入失敗。那到底scanf的返回值具體指的是什麽呢? 例子1: voi