scanf()函數執行成功後的返回值是成功讀取的變量數,也就是說,這個scanf()函數有n個變量,如果scanf()函數全部正常讀取,它就返回n。scanf()函數執行成功意味著:用戶輸入的數據類型與scanf()函數的變量類型匹配,且個數一致,如scanf(“%d”, &a);用戶輸入的是整數6,則scanf()函數執行成功,返回值為1,即scanf("%d", &a) == 1
。熟悉這一點,就可以用於驗證用戶輸入的正確性。以下是一個示例:
運行結果1:
輸入一個整數:
6 (回車)
a = 6
運行結果2:
輸入一個整數:
k (回車)
錯誤,重新輸入:
6 (回車)
a = 6
一定要注意:用scanf()輸入多個字符串時一定要注意分隔符問題。如scanf("%s,%s", p1, p2);
如果你輸入abcd,efgh 事實上p1等於abcd,efgh而不是abcd,而p2是亂碼,這時候scanf("%s,%s", p1, p2);
的返回值是 1 ,而不是2。輸入多個字符串是,使用用空格、n和t作為分隔符都是正確的,如果你輸入的字符串包含空格,則要用gets(),不要用scanf。以下是幾個正確的范例:
使用system(“CLS”)函數可以清除程序運行窗口中所有內容,即在system(“CLS”)函數之前輸出的所有內容都將被刪除。這個函數對於命令行的程序的相當有用的(個人觀點),可以實現程序界面的簡潔性。但是system(“CLS”)函數在Linux平台的GCC中是無法識別的,那就換做system(“clear”),可以實現相同的功能。
有時候程序運行只是一閃而過,看不到運行結果,這時system(“pause”)和getchar()就起作用了。system(“pause”)是程序運行到該函數就暫停運行了,按任意鍵可以繼續運行system(“pause”)函數之後的代碼,程序暫停的時候,你就可以看到之前的輸出結果了;getchar()一般用於獲得從鍵盤輸入的字符,如果是單純的一條語句getchar();就表示等待用戶輸入字符,這也起到暫停程序運行的功能,跟system(“pause”)的功能大同小異,按任意鍵後就可以繼續運行getchar();之後的代碼了。注意:system(“pause”)在Linux平台的GCC中是無法使用。
關於什麼是引用,可以看看這兩個網頁的介紹:
談談 C++ 的引用
深入探討C++中的引用
之前編寫了個C語言程序,保存為.c文件始終沒法通過編譯,結果換成.cpp居然通過編譯了。不懂其中奧妙,上CSDN提問:我用的純C編寫的程序,為什麼要用.cpp文件才能通過編譯呢?結果引來一頓痛批:"被忽悠了,這也能叫純C" ,"c語言裡面沒有引用的^_^,&只能用來取地址"。才知道我的程序裡面用了C++機制的引用,C和C++都學了,沒學精搞混了,而且嚴蔚敏吳偉民所謂的C語言版數據結構書上也使用了引用,我就當C來使了,我也被忽悠了。