文字列 - みる会図書館


検索対象: すぐわかるC/C++
298件見つかりました。

1. すぐわかるC/C++

イイ プ C8 C + + ス門 2 文字目以後は , 次のいすれか 2 アルファベット 下線記号 ( ー ) 数字 ( 0 ~ 9 ) 3 長さは自由たが , 最初の 32 文字が有効 4 大文字・小文字は区別される 0 代入 変数を宣言すれば , プログラムの中でその変数を使うことができます . つ まり , 変数の型に合ったデータを入れることができます . 変数に値を入れるには , = 演算子を使います . 変数に値を入れることを代 入 , = 演算子のことを代入演算子といいます . P1 = 3.14159 ; ・変数 pi に 3.14156 を記憶させる ・初期化 たとえば , また , 変数の宣言と同時に値を代入することもできます . float pi; pi = 3.14159 ; の代りに floatpi = 3.14159 ; のように 1 行にまとめて書くことができるわけです . ・参照 変数に記憶した値を使いたい場合は , 定数の代りに変数を書けば , 変数に 己憶されている値に置き換えられます . 二 = ロ floa し pi 3 . 141592 : printf("%fYn", P 土房 ・・ 3.141592 か出力される

2. すぐわかるC/C++

60 7 C& C + + ス門 1.6.2 文字列から数への変換 a わ a わ′ 関数 gets は , 文字列変数にしか入力できません . つまり , int 型などの変 数に入力させることはできません . 土 n し土冫 pr 土 n し f ( 。あなたの身長は ? " ) : gets は房 これはタメ ! たとえキーボードから数字を入力しても , プログラムの中では文字列として 扱われます . キーポードから int 型の変数や float 型の変数にデータを人力したい場合は , 入力した文字列をこれらの型に変換してやります . 変換するには , 次の関数 を使います . atO i atof ・・文字列を int に変換する ・文字列を float に変換する 変換の仕方は , 次のように代人式を使います . data int 型変数 a に 0 土 (string) : 文字配列 整数を表す文字列か代入されていること ! これらの関数を使用する場合は , 次の 1 行が必要です . #include <stdlib. h>

3. すぐわかるC/C++

7 ノ 2 プ C& C + + ス門 実行例 10 2 4 外部変数の da ねを関数 put と get の両方で使っています . つまり , 外部変 数の場合 , その変数が宣言された後にある , どの関数からでも参照すること ができます . 1 つの変数の値を , 複数の関数で使いたい場合に使います . ソースプログラムの中でよく使う文字の列を , 別の記号 ( 記号定数といい ます ) に定義して , その文字の列の代わりに使うことができます . たとえば改行を表す工スケープシーケンスのⅣがの代わりに ENDL とい う記号定数を使いたければ , 次のように定義します . #define IVnI この文字の列の代わりに E N D L この記号定数を使えるようにする 記号定数を定義する場所は , その記号定数を使う前ならどこでも構いませ んが , 通常はプログラムの先頭で行います . また , 慣習では , 記号定数に大文字を使います . これによって , 変数と記 号定数を簡単に見分けることができます . 次のプログラムでは , 3 つの記号定数を使っています .

4. すぐわかるC/C++

57 7.5 文字列のための変数 文字列のための変数 1.5.1 文字Üd 歹グの宣言 1. 4. 4 節で変数の宣言の仕方を説明しましたが , そこには文字列用変数の 宣言はありませんでした . なぜなら C には , " 我が輩は猫である " のような文 字列定数はあるが , 文字列変数はないからです . しかし , 文字列をしまっておく人れ物がなくては困ります . そこで C では , 文字列変数の代りに cha 「型の配列を使います . この配列については , 1. 10 節で説明します . 文字配列を使うには , 普通の変数と同様に宣言を行わなければなりません . 文字配列の宣言は次のように行います . char 配列変数名 [ n ] ; ここに記憶可能な最大文字数を指定する たたし , 実際に記憶できるのは n ー 1 文字まで char s[80]; char name [ 20 ・・・ s は 79 文字までの文字列を記憶てきる ・ name は 19 文字までの文字列を記憶てきる 己憶できる文字数が 1 文字少なくなる理由は , 1.5.2 節で説明します . 一三ロ

5. すぐわかるC/C++

22 安全な文字列のスカ gets ( s ) : printf(" データ ? " char s [ 4 受け取るバッフアを破壊する恐れがあります . たとえば 1.6.1 節で説明した文字列を入力する関数 gets を単純に使うと , 文字列を 安全な文字列のスカ 列を納めるバッファ s は , 4 文字分あります . 文字列の最後には洋びが入り のようにして s にキーポードから文字列を入力したとします . この場合 , 文字 もし 4 文字以上入力したらどうなるでしよう ? バッフアを破壊し , ますので , 入力可能な文字数は 3 文字分です . しかし , 大事なデータを壊してしまうこともあります . 723 s [ 0 ] s[2] s [ 3 ] 大事なテータが→ 入っている 可生もある char buf[6]; のような文字配列を用意し , 4 文字以上入力すると こ窈ろにも代入 されてしまい 元から入っている テータを壊してしまう このように , gets は入力 文字数を指定できないた め , バッフアを破壊する危 険を伴います . しかし , gets の入力文字数を指定 する関数はないので , 安全 に文字列を入力するための get-str という関数を作っ てみます . これは , 指定した文字数 だけ入力する関数です . た とえば , 5 文字までの文字 列を入力したければ , 最後 の洋びを含めて

6. すぐわかるC/C++

れ 5 文字列のための変数 実行例 我が輩は猫である の最後には洋 0 ' か含まれているからです . strcpy はこの・¥ 0 ・を含めてコヒーします って文字列を代入する場合は , 洋 0 ・のことを考える必要はありません . " " で囲まれた文字列 * 半角文字を 1 文字すっ代入する場合は , 最後に ' ¥ 0 ・をつけなけれはなりませんが , strcpy を使 らです . は 9 文字までしか代入できません . 9 x 2 + 1 (' ¥ので 19 個使用してしまうか こで注意しなければならないのは , 文字配列を 20 個用意しても全角文字 言時の初期化 int や char の変数と同様に , 文字配列も宣言すると同時に文字列で初期化 初期化には , 文字列代入と同様に , 文字単位で初期化する方法と , 文字列 列を初期化すると , 自動的に文字数分の配列を確保してくれます . 長所は , 配列の大きさ ( 文字数 ) を指定する必要がないことです . 文字配 することができます . 最大入力文字数を指定しない chars[] ・文字単位で初期化 で初期化する方法の 2 つがあります . コロン ) を付けます . このように文字単位で配列を初期化するときは , { } で囲み , 最後に ; ( セミ 55

7. すぐわかるC/C++

2 プログラミンクの定石 ホインタ配列 もし , 次のような文字列の配列を作りたいとします . s して [ O ] str [ 1 ] str [ 2 ] " 文字列 1 " " 文字列 2 " " 文字列 3 " ・ 文字列自体が文字の配列なので , 2 次元配列 ( 配列の配列 ) を使わなけれ ばなりません . それだけで複雑な気がして嫌になってしまいますが , ポインタ 配列を使えば , 普通の 1 次元配列で文字列の配列を作ることができます . ポインタ配列は次のように宣言します . char *ps [ 3 ] : これだけで , 次のような使い方ができるのです . ps [ 0 ] ps [ 1 ] ps [ 2 ] ”文字列 1 " ・ " 文字列 2 ” " 文字列 3 " また , ポインタ配列の良いところは , " FO 「 t 「 a が "PascaI" char*ps[] ことです . 言と同時に文字列で初期化できる 初期化するときは , 配列の要素数を指定しないことに注意してください .

8. すぐわかるC/C++

52 ただし , 使うと 1.5.2 文字配列への代スノー文字単位で代ス プ C& C + + ス門 普通の変数と違って文字配列へ文字列定数を代入するときは , = 演算子が 使えません . char s [ 2 0 ] : s = ”我が輩は猫である” これはタメ しかし , 文字配列は文字変数 (char 型変数 ) の集合なので , 文字単位で 代入できます . たとえば , chars に 0]; のように宣言した場合 , s [ 0 ] s [ 1 ] s [ 2 ] s [ 19 ] ようにします ( " 我が輩は猫である " でないのに注意 ) . たとえば , 文字配列の s に "value" という文字列を代入したければ , 次の してください ) . この先頭から順に文字を代入していけばよいのです . の 20 個の文字変数が使えます ( 配列の番号が 0 から始まっていることに注意 s [ 0 ] s [ 1 ] s [ 2 ] s [ 3 ] s [ 4 ] この一¥伊 s [ 5 ] ただし , 文字列の最後を示すため最後に洋びを代入しなければなりません . (null 文字 ) は文字列の最後を示す特別な文字です . きは s であって s [ 20 ] でないことに注意してください . これで s を文字列 " value " の代わりに使うことができます .

9. すぐわかるC/C++

2 プログラミングの定石 ノ 22 長い文字列 長い文字列を使う場合は , 複数に分けて記述することができます . たとえば ” ABCDEFGHIJKLMN" ” OPQRSTUVWXYZ " は , 次の文字列と同じです . "ABCDEFGH 工 JKLVNOPQRSTUVWXYZ " 空白文字 ( 改行も空白文字の 1 種です ) で区切られた複数の文字列は , 1 つの文字列とみなされるためです . 次に , 長い文字列の例を示します . Char *mnu main ・データベース Y n ” 1 ] データ入力 Yn " ータ表示 Yn " 3 ] データ復活 Yn " " 4 ] セープ Y n " "0] 終了 YnYn" ー Y n ” ー Y n " これは , mnu_main という 1 つの文字列です . 文字配列を宣言するとき , 次のように同時に初期化することができました . char s [ ] "ABCDEFG" ・ この文字配列をポインタ宣言のように書くこともできるのです . char *S "ABCDEFG" 上の mnu-main も同様にポインタ宣言と同時に初期化をした例です . 文字 配列 mnu_main の宣言と同時に ( 長い ) 文字列で初期化したと思えばよいので す .

10. すぐわかるC/C++

5 イ この プ C& C + + ス円 7.5.3 文字配列への代スノ StrCPY しかし文字配列へ文字を代入するのに , 1 文字ずっ代入するのは大変めん どうです . また , " 我が輩は猫である " のような全角文字を 1 文字ずつ代入することは できません . これは■我ーのような全角文字を char 型として扱うことができ ないからです . かといって全角文字を char 型の配列に代入できないわけでは ありません . つまり , 全角文字の場合 , 2 つ分の char 型配列を使います . そのため全角 文字のままで 1 文字ずつ配列に代入することはできません . その代わり , 全角 文字の代人には strcpy という文字列をコピーする関数を使います . strcpy(s, この文字列を " 我が輩は猫である " ) この文字列配列にコピー もちろん strcpy を使って半角文字列をコピーすることもできます . strcpy を使うには , 次の 1 行が必要です . #include <string. h> サンプルプログラム 24 #include <stdio . h> #include <string. h> main ( ) char s [ 2 0 / * printf を使うために必要 * / / * strcpy を使うために必要 * / strcpy(), " 我が輩は猫である printf("%sYn", s); return 0 ー