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

C語言編程的幾點經驗

編輯:關於C語言
 

一. scanf 返回值

      scanf()函數執行成功後的返回值是成功讀取的變量數,也就是說,這個scanf()函數有n個變量,如果scanf()函數全部正常讀取,它就返回n。scanf()函數執行成功意味著:用戶輸入的數據類型與scanf()函數的變量類型匹配,且個數一致,如scanf(“%d”, &a);用戶輸入的是整數6,則scanf()函數執行成功,返回值為1,即scanf("%d", &a) == 1。熟悉這一點,就可以用於驗證用戶輸入的正確性。以下是一個示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  #include <stdio.h>

int main()
{
    int a = 123;

    printf("輸入一個整數:\n");
    while (scanf("%d", &a)!=1)  /*輸入的是非法值,則要求用戶重新輸入*/
    {  /*直到用戶輸入合法值為止*/
        printf("錯誤,重新輸入:\n");
        setbuf(stdin, NULL);    /*清空鍵盤緩沖區,清楚上次錯誤輸入的數據*/
    }
    printf("a = %d", a);
    return 0;
}

運行結果1:

輸入一個整數:

6 (回車)

a = 6

運行結果2:

輸入一個整數:

k  (回車)

錯誤,重新輸入:

6 (回車)

a = 6

二. 用scanf()輸入多個字符串

     一定要注意:用scanf()輸入多個字符串時一定要注意分隔符問題。如scanf("%s,%s", p1, p2);如果你輸入abcd,efgh   事實上p1等於abcd,efgh而不是abcd,而p2是亂碼,這時候scanf("%s,%s", p1, p2);的返回值是 1 ,而不是2。輸入多個字符串是,使用用空格、n和t作為分隔符都是正確的,如果你輸入的字符串包含空格,則要用gets(),不要用scanf。以下是幾個正確的范例:

1
2
3
  scanf("%s\n%s", p1, p2);  /* 輸完p1,然後Enter,接著輸入p2 */
scanf("%s %s", p1, p2);   /* 輸入時用空格隔開 */
scanf("%s\t%s", p1, p2);  /* 輸入時用Tab隔開 */

三. 清屏函數

     使用system(“CLS”)函數可以清除程序運行窗口中所有內容,即在system(“CLS”)函數之前輸出的所有內容都將被刪除。這個函數對於命令行的程序的相當有用的(個人觀點),可以實現程序界面的簡潔性。但是system(“CLS”)函數在Linux平台的GCC中是無法識別的,那就換做system(“clear”),可以實現相同的功能。

四. system("pause")和getchar()

     有時候程序運行只是一閃而過,看不到運行結果,這時system(“pause”)和getchar()就起作用了。system(“pause”)是程序運行到該函數就暫停運行了,按任意鍵可以繼續運行system(“pause”)函數之後的代碼,程序暫停的時候,你就可以看到之前的輸出結果了;getchar()一般用於獲得從鍵盤輸入的字符,如果是單純的一條語句getchar();就表示等待用戶輸入字符,這也起到暫停程序運行的功能,跟system(“pause”)的功能大同小異,按任意鍵後就可以繼續運行getchar();之後的代碼了。注意:system(“pause”)在Linux平台的GCC中是無法使用。

五. C語言是沒有引用的

關於什麼是引用,可以看看這兩個網頁的介紹:
談談 C++ 的引用
深入探討C++中的引用

     之前編寫了個C語言程序,保存為.c文件始終沒法通過編譯,結果換成.cpp居然通過編譯了。不懂其中奧妙,上CSDN提問:我用的純C編寫的程序,為什麼要用.cpp文件才能通過編譯呢?結果引來一頓痛批:"被忽悠了,這也能叫純C" ,"c語言裡面沒有引用的^_^,&只能用來取地址"。才知道我的程序裡面用了C++機制的引用,C和C++都學了,沒學精搞混了,而且嚴蔚敏吳偉民所謂的C語言版數據結構書上也使用了引用,我就當C來使了,我也被忽悠了。

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