第4章字串及资料的输入输出格式.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章字串及资料的输入输出格式

第4章 字串及資料的輸入/輸出格式 本章的範例之一 範例4.1 talkback.c 使用陣列來處理字串。 使用%s來處理輸出、輸入字串。 使用scanf()函數時,前面必需加上一個符號。 使用C的前置處理程式來定義DENSITY符號常數,並以此表示數值62.4。 使用C的strlen()函數來取得字串的長度。 字串的介紹 字串是由一個或多個字元所形成的。 “Zing went the strings of my heart !” 雙引號非字串的一部份,它是用來告訴編 譯程式:雙引號裡的內容是一個字串。 Char型態的陣列和NULL字元 什麼是陣列 可以被想像成一連串的記憶體位置,陣列是由某種特定型態的資料所組成的序列。 如何使用字串1 範例4.2 praise1.c 字串的輸入與輸出 如何使用字串2 當它讀到一個空的資料、跳格符號、或換行符號,就會停止讀取。 scanf()使用%S時,表示讀取一個字串。 strlen()函數 strlen()函數可回傳字串中有多少字元。 範例4.3 praise2.c 常數及C的前置處理程式 假設程式中有許多地方都使用同一常數,而現在必須更改常數的值(例如稅率),此時只要更改符號常數的定義即可,並不需要一一修改程式中使用了此常數的所有敘述。 範例4.4 pizza.c #define也可以用在字元及字串方面的函數:字元會配合單引號使用,而字串配合雙引號來使用。 符號常數名稱的命名規則和變數名稱的命名規則是一樣的。 const 修飾符號 也可利用const產生符號常數 const int MONTHS = 12; 如此一來,MONTHS會變成一個唯讀的數值,您可以輸出MONYHS,或在運算式中使用它,不過就是不能改變MONTHS的值。 符號常數 C的limits.h和float.h標頭檔,分別提供關於整數型態和浮點數型態的大小詳細限制,這些檔案定義了許多實作上會運用到的符號常數。 表4.1為在limits.h中所定義的一些常數。 表4.2為float.h中所定義的一些常數。 探索及使用printf()和scanf() printf()和scanf()函數可用來跟程式溝通,它們稱為輸入/輸出函數(Input/Output function),或簡稱I/O函數(I/O function)。 printf()函數 使用printf()來輸出變數時,必須傳給printf()一個變數型態。例如整數使用%d,輸出字元時則使用%c。 表4.3 轉換規格符號及其輸出結果。 使用printf() printf(you look great in %s\n,color); 在printf()中轉換規格符號的修飾字元 表4.4 、4.5列出可使用的修飾字元。 常用的有以下幾種: 數字:例如%4d 要顯示的數字或字串長度限制。 旗標:例如%-20s字串靠左對齊。 l : 例如:%ld,可表示long int。 scanf()函數 Scanf()可將輸入的字串轉成許多不同的形式,例如整數、浮點數、字元或字串,他所作的工作剛好和printf()相反,printf()是把整數、浮點數、字元和字串都轉成文字,然後再輸出到螢幕上。 使用scanf()讀取資料,並指定給變數時,只要再變數名稱前加上一個即可。 scanf()函數 範例4.14 input.c scanf()函數使用空白符號(換行字元、跳格字元、和空白字元)來區分輸入資料。 格式串列中固定的字元 如果不小心將逗號放在兩個轉換符號中間,如下: scanf(“%d,%d”,n,m); 此時scanf將認定輸入方式為先輸入一個數字,再輸入一個逗號,最後再輸入第二個數字。 printf()的修飾字元* 假設不想立刻在程式裡設定輸入的最大長度,而是要稍後再作設定的話,此時可在轉換符號裡使用*,不過還是必須以傳參數的方式告訴printf()最大的輸入長度是多少;也就是說,當使用%*d時,後面的參數必須指定*的數值和d所需要的數值,這種方式也可用於浮點數,以這種方式可設定其精確度,如範例4.15。 Scanf()的修飾字元* 在scanf()中使用*效果就不同了;在%和轉換字母間加入*,將會造成函數洛過所對應的輸入資料,如範例4.16所示。 * * Z i n g w e n t t h e s t r i n g s o f m y ! \0 每一格為一個位元組 Null字元 在儲存陣列字串的陣列當中,必需保留一個位置,用來儲存NULL,所以,陣列長度至少要比它所儲存的字串長度多一個字元。 char name[40]; T u f f y \0 5個字元 沒有功用的空間 代表結束的null字元 strlen()知道什麼時候要停止計算

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档