C言語文字列とフォーマット入出力

14662 ワード

1.プリアンブル
 1 #include<stdio.h>

 2 #include<string.h>        //1  strlen()     

 3 #define DENSITY   62.4    //2     

 4 int main(void)

 5 {

 6     float weight,volume;

 7     int size,letters;

 8     char name[40];    //3       40   

 9 

10     printf("Hi! What's your first name?
"); 11 scanf("%s",name); 12 printf("%s,What's your weight in pounds?
",name); 13 scanf("%f",&weight); 14 size=sizeof name; //4 name[] 15 letters=strlen(name);//5 strlen() 16 volume=weight/DENSITY; 17 printf("well,%s,your volume is %2.2f cubic feet.
",name,volume);//%2.2f 2, 18 printf("Also,your first name has %d letters,
",letters); 19 printf("and we have %d bytes to store it in.
",size); 20 return 0; 21 }

 
2.文字列について
(1)文字列は、1つ以上の文字のシーケンスです.「I am a student!」のようです.
(2)C言語は文字列の終わりを空文字で表記する.配列のセル数は、格納する文字数より少なくとも1多い必要があります.
(3)文字列と文字.'x'と「x」の違い(後者は文字列が「x」と「0」からなる).
(4)Sizeof()とstrlen()関数.
  • 同じ文字列で、sizeof()はフラグ文字列の末尾の空の文字を計算し、strlen()より1大きい.
  • strlen()は、文字単位で文字列の長さを与えます.sizeof()は配列の長さ(割り当てられたメモリセル)を与える.
  • は、1つのタイプの大きなサイズを取得する~特定の量のサイズを取得する.sizeof(char)とsizeof(name)=sizeof name.

  •  1 sizeof() strlen() 
    
     2 #include<stdio.h>
    
     3 #include<string.h>
    
     4 #define PRAISE  "What a super marvelous name!"
    
     5 int main(void)
    
     6 {
    
     7     char name[40];
    
     8     printf("What's your name?
    "); 9 scanf("%s",name); 10 printf("Hello,%s.%s
    ",name,PRAISE); 11 printf("Your name of %d letrers occupies %d memory cells.
    ", 12 strlen(name),sizeof(name));//sizeof name 13 printf("The phrase of praise has %d letters", 14 strlen(PRAISE)); 15 printf("and occupies %d memory cells.
    ",sizeof(PRAISE));//sizeof PRAISE 16 return 0; 17 }

     
    3.定数およびCプリプロセッサ
    (1)定数は0.015である.float taxrate=0.015.定数0.015を変数taxrateに割り当てますが、プログラムは意外に値を変更する可能性があります.
    (2)2つの方法const修飾子と#define前処理コマンド
  • const  int MONTHS=12;
  • #define MONTHS     +12;(#define TEE  'T')(#define OOPS  "Now you have it!")


  • 4.printf()関数
    (1)printf():(「制御記述」+変数リスト)~(変数は変数、定数、式にかかわらず値を使用する)
    (2)printf()変換説明子:%c--1文字、%d--符号付き10進数整数、%e--浮動小数点数e記数法、%f-浮動小数点数10進数、%p--ポインタ、%%--1%、%s--文字列を印刷...:
  • 不一致の変換を避けてください.


  • (3)printf()フラグ:-(左揃え)、+(記号付き)、#(...)、0(すべての数値フォーマットに対して、フィールド幅を先頭0で埋めます)
  • 文字列の最初の8文字を印刷します.フィールド幅は8文字(%8.8 s)
  • です.
  • 二重引用符「....」
  • を印刷
  • は、パラメータリストにおいて指定するフィールド幅の8進数整数(%*0)を印刷する.
  • %5d(00006)
  • 固定フィールド幅(オーバーフロー防止効果)
  • を指定する.

    (4)printf()で長い文字列を印刷する
    a.複数のprintf()関数を採用する.
    b.printf()に()とリターンキーを採用する
    c.文字列接続方法を採用する(「Hello」「world」)
     1 printf()       
    
     2 #include<stdio.h>
    
     3 int main(void)
    
     4 {
    
     5     printf("Here's one way to print a ");
    
     6     printf("long string.
    ");//a 7 printf("Here's another way to print a \ 8 long string.
    ");//b 9 printf("Here's the newest way to print a " 10 "long string.
    ");//c 11 return 0; 12 }

     
     
     
    (5)printf()の関数戻り値(印刷された文字の数を返し、出力が間違っている場合は-1を返し、出力エラーをチェックするのによく使われます.画面ではなくファイルに)
     1 printf()    
    
     2 #include<stdio.h>
    
     3 int main(void)
    
     4 {
    
     5     int bph2o=212;
    
     6     int rv;
    
     7  
    
     8     rv=printf("%d F is water's boiling point.
    ",bph2o); 9 printf("The printf()function printed %d characters.
    ",rv); 10 return 0; 11 }

     
    5.scanf()関数
    (1)scanf()は、最初の空白文字スペース、タブ、または改行文字に遭遇したときに読み取りを停止します.~gets()関数は、文字列を読み込むために使用できます.
    (2)変数タイプの値に&を加え、文字列を1文字配列に読み込んで使用しない&.
    (3)scanf("%d,%d",&n,&m)入力1,2{scanf("%c",&ch)入力で出会った最初の文字を読み取る
    6.修飾子について*
  • printf()では、
  • の代わりにフィールド幅部分に*を使用します.
  • scanf()で*関数を対応する出力項目をスキップさせる(scanf(「%*d%*d%d」,&n);最初の2つはスキップ)

  •   
     1            
    
     2 #include<stdio.h>
    
     3 int main(void)
    
     4 {
    
     5     unsigned width,precision;
    
     6     int number=256;
    
     7     double weight=242.5;
    
     8 
    
     9     printf("What field width?
    "); 10 scanf("%d",&width); 11 printf("The number is :%*d:
    ",width,number); 12 printf("Now enter a width and a precision:
    "); 13 scanf("%d%d",&width,&precision); 14 printf("Weight=%*.*f
    ",width,precision,weight); 15 return 0; 16 }