C primer plus(第6版)---独学ing

1624 ワード

C primer plus(第6版)-独学ing
第十一章文字列と文字列関数
  • 文字列
  • 文字列はデータ型です.二重引用符で囲まれた内容は文字列の字面量、文字列定数とも呼ばれます.文字列を定義するには多くの方法があります.たとえば、文字列定数、char配列、charへのポインタ.char words[]="…"char * words ="…"
    文字列定数は静的ストレージカテゴリであり、この文字列定数は一度だけ格納されることを示します.二重引用符で囲まれた文字列の格納位置を指す定数とみなされます.
    int main(void)
    {
         printf("%s,%p,%c.
    ","We","are","space farers"); return 0; } // : We,0x10000061,s.

    上記のコードはprintf()関数を用いた.puts()関数などの他の関数もありますが、puts()関数は文字列のみを印刷し、文字列の末尾に改行文字を付けます.
  • 文字列の初期化定義char配列は、配列がどれだけの空間を必要とするかをコンパイラに知らせる必要があります.1.配列を文字列で初期化する:const char words[40]=「apple.」この方法は標準的な初期化配列法より良い:words[40]={‘a’,‘p’,‘p’,‘l’,‘e’}}最後の空文字を忘れないでください.一般に、コンパイラは配列サイズを自動的に決定します.2.ポインタ定義文字列:const char*zifu="apple."上記のwordsとzifuは文字列のアドレスを表しています.
  • ポインタと配列定義文字列の相違配列は、文字列を1つの文字に分割し、最後の空の文字を含む.次に、文字列は静的ストレージ領域に格納され、プログラムが実行されると、その配列にメモリが割り当てられます.このとき2つの文字列があります.配列は定数ポインタであり、メモリ割り当てと配列の差は多くありません.ポインタは最初のヘッダを指しますが、ポインタは変更できます.したがって、ポインタ時変数.
  • 割付スペース文字列定数を作成する場合、まず割付スペースを思い浮かべます.gets()関数は、行全体の入力を読み込み、改行を破棄し、他の文字を格納し、末尾に空の文字を追加します.gets()関数には唯一のパラメータしかありません.これにより、gets()関数には、パラメータの配列が入力行を入れることができるかどうかをチェックできないという欠点があります.これにより、多くの問題が発生します.文字列が長すぎると、バッファがオーバーフローします.オーバーフローした文字が未使用のメモリを占有している場合は、問題ありません.しかし、他のデータを消去すると、プログラムが異常に中止されます.別の関数fgets()関数(およびfputs()関数)fgets()関数が現れ、2番目のパラメータで読み込まれた文字数を制限できます.nを制限数として入力すると、n-1文字しか読み込めず、最後に空の文字が与えられます.fgets()関数は改行文字に出会って格納されます.fgets()関数の3番目のパラメータは、読み込むファイルを指定し、stdinをパラメータとします.fgets()関数はcharのポインタを返し、プログラムが順調であればポインタ:空のポインタを返します.この保証は有効なデータを指さない.
              ***       ***