C Primer Plus 5 th翻訳第四章:文字列とフォーマット入出力(二)

6607 ワード

翻訳がこんなに骨が折れるとは思わなかった...
今日は2時間近くかかってやっと翻訳しました.
中にはいくつかの図があって、出してまたアップロードしなければならなくて、重要なピクチャーではありませんて、私は出しません.の
初めての翻訳ですが、ちょっとクズがあるかもしれませんが、お許しください.
まず原文を書きます.
 
Character Strings: An Introduction A character string is a series of one or more characters. Here is an example of a string:
 
"Zing went the strings of my heart!"



The double quotation marks are not part of the string. They inform the compiler that they enclose a string, just as single quotation marks identify a character. Type char Arrays and the Null Character C has no special variable type for strings. Instead, strings are stored in an array of type char. Characters in a string are stored in adjacent memory cells, one character per cell, and an array consists of adjacent memory locations, so placing a string in an array is quite natural (see Figure 4.1 ).  
Figure 4.1. A string in an array.
  Note that Figure 4.1 shows the character\0 in the last array position. This is the null character, and C uses it to mark the end of a string. The null character is not the digit zero; it is the nonprinting character whose ASCII code value (or equivalent) is 0. Strings in C are always stored with this terminating null character. The presence of the null character means that the array must have at least one more cell than the number of characters to be stored. Now just what is an array? You can think of an array as several memory cells in a row. If you prefer more formal language, an array is an ordered sequence of data elements of one type. This example creates an array of 40 memory cells, or elements, each of which can store one char-type value by using this declaration:
 
char name[40];



The brackets after name identify it as an array. The 40 within the brackets indicates the number of elements in the array. The char identifies the type of each element (see Figure 4.2 ).  
Figure 4.2. Declaring a variable versus declaring an array.
  Using a character string is beginning to sound complicated! You have to create an array, place the characters of a string into an array, one by one, and remember to add\0 at the end. Fortunately, the computer can take care of most of the details itself. Using Strings Try the program in Listing 4.2 to see how easy it really is to use strings. Listing 4.2. The praise1.c Program
/* praise1.c -- uses an assortment of strings */



#include <stdio.h>



#define PRAISE "What a super marvelous name!"



int main(void)



{



    char name[40];







    printf("What's your name?
"); scanf("%s", name); printf("Hello, %s. %s
", name, PRAISE); return 0; }
The %s tells printf() to print a string. The %s appears twice because the program prints two strings: the one stored in the name array and the one represented by PRAISE. Running praise1.c should produce an output similar to this:
 
What's your name?



Hilary Bubbles



Hello, Hilary. What a super marvelous name!



You do not have to put the null character into the name array yourself. That task is done for you by scanf() when it reads the input. Nor do you include a null character in the character string constant PRAISE. We'll explain the #define statement soon; for now, simply note that the double quotation marks that enclose the text following PRAISE identify the text as a string. The compiler takes care of putting in the null character. Note (and this is important) that scanf() just reads Hilary Bubble's first name. After scanf() starts to read input, it stops reading at the first whitespace (blank, tab, or newline) it encounters. Therefore, it stops scanning for name when it reaches the blank between Hilary and Bubbles. In general, scanf() is used with %s to read only a single word, not a whole phrase, as a string. C has other input-reading functions, such as gets(), for handling general strings. Later chapters will explore string functions more fully.
 
 
訳文:
文字列の概要1つの文字列は、一連の1つまたは複数の文字です.次は文字列の例です.「Zing went the strings of my heart!」2つの二重引用符はこの文字列の一部ではありません.コンパイラには、単一引用符で文字を定義するように文字列であるという情報が表示されます.char配列タイプおよび空文字Cには、文字列に特化して設定された変数タイプはありません.逆に、文字列はcharタイプの配列に格納されます.文字列中の文字はすべて隣接するメモリセルに格納され、1文字が1つのメモリセルを占め、配列は隣接するメモリ位置からなるので、1つの配列の中に文字列を置くのは自然です(図4.1参照).図4.1文字列は1つの配列注意で、図4.1の中の配列の最後の位置に文字0が表示されます.これは空の文字(null charater)です.Cは、1文字列の最後を空文字で表す.空の文字は数字ではありません.これは非印刷文字で、ASCII値は0です.文字列はCに格納されると通常空の文字で終わる.空の文字の存在は、この配列が少なくとも格納される文字数より1多いようにします.では、いったい何が配列なのでしょうか.1列に並んだいくつかのメモリユニットを想像することができます.より正式な点の説明が好きな場合は、配列は同じタイプの基礎データです.このサンプル・プログラムは、以下の宣言を用いて、40個のメモリ・ユニット(またはベース・データ)を有する配列を作成し、各メモリ・ユニットは、charタイプの値を格納することができる:Char name[40].nameの後ろの括弧は、これが配列であることを示す.内側の数字40は、この配列の長さを表す.charは、この配列に格納されているデータ・タイプを説明する.(図4.2参照).図4.2宣言変数と配列は文字列タイプを使用して複雑になり始めました!文字列に文字を1つずつ入れる配列を作成する必要があります.最後に0文字を追加する必要があることを忘れないでください.幸いなことに、コンピュータはこれらの詳細を注意深く処理することができます.文字列を使用してListing 4.2のプログラムを実行してみて、それがどのようにできるかを見てみましょう.文字列を簡単に使用します.Listing 4.2.  praise1.cプログラム/*praise 1.c-異なるタイプの文字列*/#include #define PRAISE "What a super marvelous name!" int main(void) {     char name[40];     printf("What's your name?");     scanf("%s", name);     printf("Hello, %s. %s", name, PRAISE);     return 0; } %sはprintf()が出力する文字列を示します.%sは、プログラムが2つの文字列を出力したため、1つはname配列に格納され、もう1つはPRAISEによって表されている.praiselを実行します.cは次のように出力されます:What's your name?Hilary Bubbles Hello, Hilary. What a super marvelous name! 手動で空の文字をname文字配列に入れる必要はありません.scanf()は入力を読むとこのタスクを完了します.文字列定数PRAISEの末尾に空の文字を置く必要はありません.私たちはすぐに#define文を説明します.現在では、PRAISEの後ろにある二重引用符が文字列であることを簡単に覚えておく必要があります.コンパイラは空の文字を配列に挿入します.注意(これは重要):scanf()はHilary Bubbleの名前だけを読み込んでいます.scanf()が入力を読み込むと、最初の空白記号(スペース、タブ、改行など)に遭遇した後に読み取りが終了します.したがって、HilaryとBubblesの間の空白に遭遇すると、読み取り文字はname配列に停止します.通常、scanf()は、フレーズや文字列ではなく%sを使用して単一の文字を読み取ります.Cは、gets()のような他の読み出し入力関数を用いて一般的な文字を処理する.後ろの数枚は文字列関数をより深く探究します.
(未完待機)