日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
學C51的基礎(chǔ)6 《 輸入輸出函數(shù)及控制流程語句 》 作者[cmh]©;
學C51的基礎(chǔ)6 《 輸入輸出函數(shù)及控制流程語句 》 作者[cmh]©;
 更新時間:2008-8-17 16:34:16  點擊數(shù):42
【字體: 字體顏色

          printf("i, j=?\n");
          scanf("%d, %d", &i, &j);
     }

    上例中的scanf()函數(shù)先讀一個整型數(shù), 然后把接著輸入的逗號剔除掉, 最后讀入另一個整型數(shù)。如果","這一特定字符沒有找
到, scanf()函數(shù)就終止。若參數(shù)之間的分隔符為空格, 則參數(shù)之間必須輸入一個或多個空格。
    說明:
    (1). 對于字符串數(shù)組或字符串指針變量, 由于數(shù)組名和指針變量名本身就是地址, 因此使用scanf()函數(shù)時, 不需要在它們前
面加上"&"操作符。

    例3

     mian()
     {
          char *p, str[20];
          scanf("%s", p);          /*從健盤輸入字符串*/
          scanf("%s", str);
          printf("%s\n", p);       /*向屏幕輸出字符串*/
          printf("%s\n", str);
     }

    (2). 可以在格式化字符串中的"%"各格式化規(guī)定符之間加入一個整數(shù), 表示任何讀操作中的最大位數(shù)。如例3中若規(guī)定只能輸入
10字符給字符串指針p, 則第一條scanf() 函數(shù)語句變?yōu)?br>          scanf("%10s", p);
    程序運行時一旦輸入字符個數(shù)大于10, p就不再繼續(xù)讀入, 而后面的一個讀入函數(shù)即scanf("%s", str)就會從第11個字符開始
讀入。實際使用scanf()函數(shù)時存在一個問題, 下面舉例進行說明:
    當使用多個scanf()函數(shù)連續(xù)給多個字符變量輸入時, 例如:

     main()
     {
          char c1, c2;
          scanf("%c", &c1);
          scanf("%c", &c2);
          printf("c1 is %c, c2 is %c", c2\1, c2);
     }

    運行該程序, 輸入一個字符A后回車 (要完成輸入必須回車), 在執(zhí)行scanf("%c", &c1)時, 給變量c1賦值"A", 但回車符仍然
留在緩沖區(qū)內(nèi), 執(zhí)行輸入語句scanf("%c", &c2)時, 變量c2輸出的是一空行,如果輸入AB后回車, 那么輸出結(jié)果為:
       c1 is A, c2 is B。
    要解決以上問題, 可以在輸入函數(shù)前加入清除函數(shù)fflush()( 這個函數(shù)的使用方法將在本節(jié)最后講述)。修改以上程序變成:

     #include<stdio.h>
     main()
     {
          char c1, c2;
          scanf("%c", &c1);
          fflush(stdin);
          scanf("%c", &c2);
          printf("c1 is %c, c2 is %c", c1, c2);
     }

    1.1.2 非格式化輸入輸出函數(shù)
    非格式化輸入輸出函數(shù)可以由上面講述的標準格式化輸入輸出函數(shù)代替, 但這些函數(shù)編譯后代碼少, 相對占用內(nèi)存也小, 從而
提高了速度, 同時使用也比較方便。下面分別進行介紹。
    一、puts()和gets()函數(shù)
    1. puts()函數(shù)
    puts()函數(shù)用來向標準輸出設(shè)備(屏幕)寫字符串并換行, 其調(diào)用格式為:
        puts(s);
    其中s為字符串變量(字符串數(shù)組名或字符串指針)。
    puts()函數(shù)的作用與語printf("%s\n", s)相同。

    例4:

     main()
     {
          char s[20], *f;                 /*定義字符串數(shù)組和指針變量*/
          strcpy(s, "Hello! Turbo C2.0"); /*字符串數(shù)組變量賦值*/
          f="Thank you";                  /*字符串指針變量賦值*/
          puts(s);
          puts(f);
     }

    說明:
    (1). puts()函數(shù)只能輸出字符串, 不能輸出數(shù)值或進行格式變換。
    (2). 可以將字符串直接寫入puts()函數(shù)中。如:
          puts("Hello, Turbo C2.0");

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

    例5

     main()
     {
          char s[20], *f;
          printf("What''s your name?\n");
          gets(s);                      /*等待輸入字符串直到回車結(jié)束*/
          puts(s);                      /*將輸入的字符串輸出*/
          puts("How old are you?");
          gets(f);
          puts(f);
     }

    說明:
    (1). gets(s)函數(shù)中的變量s為一字符串。如果為單個字符, 編譯連接不會有錯誤, 但運行后會出現(xiàn)"Null pointer asignmemt"
的錯誤。

    二、putchar()、getch()、getche()和getchar()函數(shù)
    1. putchar()函數(shù)
    putchar()函數(shù)是向標準輸出設(shè)備輸出一個字符, 其調(diào)用格式為:
       putchar(ch);

    其中ch為一個字符變量或常量。
    putchar()函數(shù)的作用等同于printf("%c", ch);

    例6:

     #include<stdio.h>
     main()
     {
          char c:             /*定義字符變量*/
          c=''B'';              /*給字符變量賦值*/
          putchar(c);         /*輸出該字符*/
          putchar(''\x42'');    /*輸出字母B*/
          putchar(0x42);      /*直接用ASCII碼值輸出字母B*/
     }

    從本例中的連續(xù)四個字符輸出函數(shù)語句可以分清字符變量的不同賦值方法。

    2. getch()、getche()和getchar()函數(shù)
    (1) getch()和getche()函數(shù)
    這兩個函數(shù)都是從鍵盤上讀入一個字符。其調(diào)用格式為:
        getch();
        getche();
    兩者的區(qū)別是: getch()函數(shù)不將讀入的字符回顯在顯示屏幕上, 而getche()函數(shù)卻將讀入的字符回顯到顯示屏幕上。
    例7:

     #include<stdio.h>
     main()
     {
          char c, ch;
          c=getch();     /*從鍵盤上讀入一個字符不回顯送給字符變量c*/
          putchar(c);    /*輸出該字符*/
          ch=getche();   /*從鍵盤上帶回顯的讀入一個字符送給字符變量ch*/
          putchar(ch);
     }

    利用回顯和不回顯的特點, 這兩個函數(shù)經(jīng)常用于交互輸入的過程中完成暫停等功能。

    例8:

     #include<stdio.h>
     main()
     {
          char c, s[20];
          printf("Name:");
          gets(s);
          printf("Press any key to confinue...");
          getch();  /*等待輸入任一鍵*/
     }

    (2) getchar()函數(shù)
    getchar()函數(shù)也是從鍵盤上讀入一個字符, 并帶回顯。它與前面兩個函數(shù)的區(qū)別在于:getchar()函數(shù)等待輸入直到按回車才
結(jié)束,  回車前的所有輸入字符都會逐個顯示在屏幕上。但只有第一個字符作為函數(shù)的返回值。
    getchar()函數(shù)的調(diào)用格式為:

        getchar();

    例9:
     #include<stdio.h>
     main()
     {
          char c;
          c=getchar();   /*從鍵盤讀入字符直到回車結(jié)束*/
          putchar(c);    /*顯示輸入的第一個字符*/
          getch();       /*等待按任一健*/
     }
  • 上一篇: 學C51的基礎(chǔ)7《 文件的輸入輸出函數(shù) 》 作者[cmh]©;
  • 下一篇: 學C51的基礎(chǔ)5《 運算符 》 作者[cmh]©
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1