奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

C語言EOF如何使用

時間:2025-05-01 06:13:11 C語言 我要投稿
  • 相關推薦

C語言EOF如何使用

  如果EOF是一個特殊字符,那么假定每個文本文件的結尾都有一個EOF(也就是-1),還是可以做到的,因為文本對應的ASCII碼都是正值,不可能有負值。但是,二進制文件怎么辦呢?怎么處理文件內部包含的-1呢?下面是小編為大家帶來的關于C語言EOF如何使用的知識,歡迎閱讀。

  存在問題:

  又一次遇到有人問EOF的用法,到底如何來使用那?

  解決方案:

  這里有一篇文章寫的不錯,希望對EOF沒有理解的同學能有所幫助。

  我學習C語言的時候,遇到的一個問題就是EOF。

  它是end of file的縮寫,表示"文字流"(stream)的結尾。這里的"文字流",可以是文件(file),也可以是標準輸入(stdin)。

  比如,下面這段代碼就表示,如果不是文件結尾,就把文件的內容復制到屏幕上。

  int c;

  while ((c = fgetc(fp)) != EOF) {

  putchar (c);

  }

  很自然地,我就以為,每個文件的結尾處,有一個叫做EOF的特殊字符,讀取到這個字符,操作系統就認為文件結束了。

  但是,后來我發現,EOF不是特殊字符,而是一個定義在頭文件stdio.h的常量,一般等于-1。

  #define EOF (-1)

  于是,我就困惑了。

  如果EOF是一個特殊字符,那么假定每個文本文件的結尾都有一個EOF(也就是-1),還是可以做到的,因為文本對應的ASCII碼都是正值,不可能有負值。但是,二進制文件怎么辦呢?怎么處理文件內部包含的-1呢?

  這個問題讓我想了很久,后來查了資料才知道,在Linux系統之中,EOF根本不是一個字符,而是當系統讀取到文件結尾,所返回的一個信號值(也就是-1)。至于系統怎么知道文件的結尾,資料上說是通過比較文件的長度。

  所以,處理文件可以寫成下面這樣:

  int c;

  while ((c = fgetc(fp)) != EOF) {

  do something

  }

  這樣寫有一個問題。fgetc()不僅是遇到文件結尾時返回EOF,而且當發生錯誤時,也會返回EOF。因此,C語言又提供了feof()函數,用來保證確實是到了文件結尾。上面的代碼feof()版本的寫法就是:

  int c;

  while (!feof(fp)) {

  c = fgetc(fp);

  do something;

  }

  但是,這樣寫也有問題。fgetc()讀取文件的最后一個字符以后,C語言的feof()函數依然返回0,表明沒有到達文件結尾;只有當fgetc()向后再讀取一個字符(即越過最后一個字符),feof()才會返回一個非零值,表示到達文件結尾。

  所以,按照上面這樣寫法,如果一個文件含有n個字符,那么while循環的內部操作會運行n+1次。所以,最保險的寫法是像下面這樣:

  int c = fgetc(fp);

  while (c != EOF) {

  do something;

  c = fgetc(fp);

  }

  if (feof(fp)) {

  printf(" End of file reached.");

  } else {

  printf(" Something went wrong.");

  }

  除了表示文件結尾,EOF還可以表示標準輸入的結尾。

  int c;

  while ((c = get)) != EOF) {

  putc);

  }

  但是,標準輸入與文件不一樣,無法事先知道輸入的長度,必須手動輸入一個字符,表示到達EOF。

  Linux中,在新的一行的開頭,按下Ctrl-D,就代表EOF(如果在一行的中間按下Ctrl-D,則表示輸出"標準輸入"的緩存區,所以這時必須按兩次Ctrl-D);Windows中,Ctrl-Z表示EOF。(順便提一句,Linux中按下Ctrl-Z,表示將該進程中斷,在后臺掛起,用fg命令可以重新切回到前臺;按下Ctrl-C表示終止該進程。)

  那么,如果真的想輸入Ctrl-D怎么辦?這時必須先按下Ctrl-V,然后就可以輸入Ctrl-D,系統就不會認為這是EOF信號。Ctrl-V表示按"字面含義"解讀下一個輸入,要是想按"字面含義"輸入Ctrl-V,連續輸入兩次就行了。

  拓展:

  (一)如何學習c語言最好

  用PIC單片機開發電子產品和用C語言編程,最主要的是要堅持學習,不能中斷。應通過各種實例程序來學習C語言的語法規則。要熟練掌握C語言的數據類型表達方法、各種運算符、各種語句結構。

  最好能背誦。要學會用C函數實現所需功能的方法。實際上,每個C函數都相當于一個功能模塊,一個C函數便可實現一種功能。

  此外,用C語言開發PIC單片機應用產品,必須具有PIC單片機匯編語言知識。如果你已經掌握了用匯編語言編寫PIC單片機源程序的方法,最好將編寫成功的PIC單片機匯編語言源程序,逐個用C語言源文件代換,從中體會C語言的優越性。

  (二)c語言學習技巧

  1、首先準備一臺PC,學編程一般對PC沒有太大的要求,一般主流的配置就好。

  2、有了電腦之后,就得考慮安裝什么操作系統了,主流使用的操作系統是windows,不過在這里不建議學習C編程使用windows,建議使用Linux。所以學習者最好安裝雙系統,或者徹底習慣Linux系統。

  3、不管學習哪門編程語言,我都建議學習者必須有一本關于此語言的全面知識的書籍,大學里一般采用的是譚浩強老師的《C語言程序設計》,建議學習者可以去仔細研讀。

  4、在平時學習看書的時候,一定有學會做筆記的習慣,而且不僅要記錄,還要經常看自己所做的筆記,這樣才會有較好的學習效率。

  5、多逛技術論壇或者技術問答社區,想別人分享自己的代碼,有要積極去閱讀別人的代碼,互相取長補短。

  6、在C語言基礎學習得差不多之后,可以深入學習數據結構,以及自己嘗試做一些簡單的項目,比如學生學籍管理系統、圖書管理系統,銀行管理系統等。

【C語言EOF如何使用】相關文章:

C語言中如何使用sscanf08-27

如何使用C語言數組指針09-14

如何使用C語言求N的階乘07-11

如何使用C語言開發DSP系統09-13

C語言中如何使用隨機數09-21

C語言for循環的使用10-24

C語言的使用的詳解09-17

C語言typedef的使用09-24

C語言的內存使用09-23

主站蜘蛛池模板: 鄂托克旗| 金阳县| 安岳县| 平原县| 霍林郭勒市| 尼勒克县| 遂昌县| 孟津县| 惠东县| 思南县| 凉山| 晋州市| 土默特右旗| 华亭县| 丰台区| 通化市| 崇明县| 无棣县| 郸城县| 南澳县| 清丰县| 永城市| 商河县| 泗阳县| 兴安盟| 江城| 聂拉木县| 东源县| 东阿县| 孟连| 宜宾县| 菏泽市| 运城市| 博湖县| 越西县| 乾安县| 吉木萨尔县| 新田县| 阜南县| 吐鲁番市| 思南县|