《C和指標》之“輸入輸出函數”總結

來源:互聯網
上載者:User

1. 先來幾個小的程式!

 

/*Test 1*/<br />#include <stdio.h><br />#include <stdlib.h></p><p>int main(int argc,char *argv[])<br />{<br /> printf("%d",3.14);<br /> printf("%d",(int)3.14);<br /> return 0;<br />}

/*Test 2*/<br />#include <stdio.h><br />#include <stdlib.h></p><p>int main(int argc,char *argv[])<br />{<br />char c;<br />while(c != 'a')<br />{<br />c = getchar();<br />putchar(c);<br />fflush(stdin);<br />}<br /> return 0;<br />}

 

運行Test 1,發現輸出的第一個並不是3,第二次輸出的才是3。這是因為printf("%d")的格式解析原因;

運行Test 2,發現除了如果一次輸入多個字元的話,只能顯示一個字元;這就是fflush(stdin)的作用,清空緩衝區!

 

2. 為什麼會存在freopen()這個函數?

    這是函數原型:FILE *freopen(char *filename, char *type, FILE *stream);

    主要用於檔案重新導向,比如freopen("1.txt","w",stdout);實現了將標準輸出定向到文本1.txt中的目的。

 

3. 使用%-6.10s列印會有什麼效果?

    左側對其,保留10位,如不足10位並且大於6位,則全部顯示,如不足六位則佔用六位,右側使用空格補齊!

 

4. 使用%f列印的時候,存在著四捨五入的情況。

 

5. 輸入/輸出函數家族

    5.1 單個字元實現

          getchar()、putchar():從標準輸入讀入字元(或者向標準輸出輸出字元),是函數

          getc()、fgetc()、putc()、fputc():接收(或輸出)流參數,以宏的方式實現

    5.2 一行字元實現

          fgets()、gets():前者接收流參數,後者從標準輸入讀取,二者都是讀取一行內容

          fputs()、puts():前者輸出資料流到文本中,後者從輸出文本到標準輸出上,二者都是輸出一行內容

 

6. 格式化輸入/輸出函數家族

    6.1 格式化輸入實現

          fscanf():接收一個流參數

          sscanf():從記憶體緩衝區中讀取

          scanf():從標準輸入中讀取

    6.2 格式化輸出實現

          fprintf()、sprintf()、printf()和上面的是一一對應的。

 

7. 除了上面處理文本,也就是ascii編碼實現的函數外,有專門的對位元據進行讀寫的,分別是fread()和fwrite();

 

8. 改變流讀寫順序和位置函數

    ftell()、fseek()、fgetpos()、fsetpos()、rewind()等。

 

9. 改變緩衝區的設定

    setbuf()、setvbuf();後者更為通用。

 

10. 臨時檔案等檔案命令函數

    tmpfile():建立臨時檔案

    tmpnam():建立臨時檔案名稱

    remove():刪除檔案

    rename():修改檔案名稱

 

11. 處理錯誤函數

    ferror():出現錯誤,返回錯誤資訊

    clearerr():重設錯誤狀態

 

12. 如何得到perror函數可能列印的所有錯誤資訊列表?

 

 

 

註:本文中函數名func()只代表函數名,並不能完整的包括傳回值以及參數列表情況。如需要請自行查詢!

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.