トップ->C言語入門

あなたは

人目のC(C++)言語入門受講生です。

C言語入門内検索

目次
C言語入門〜トップ
C++言語入門〜トップ
0. はじめに

1. 基本的な決まり
   1. 書式
   2. 予約語
   3. 構成
   4. データの形と宣言
   5. 定数と変数
   6. 簡単な演算

2. 入出力
   1. printf
   2. scanf
   3. 練習問題1
   4. 1文字入出力
   5. エスケープシーケンス

3. 制御文
   1. 順次構造
   2. 単一分岐
   3. 多重分岐
   4. ケース構造
   5. 反復構造(while)
   6. 反復構造(do)
   7. 反復構造(for)
   8. 補助制御文
   9. 練習問題
   10.練習問題

4. 配列
   1. 配列とは
   2. 配列の宣言と初期化
   3. 配列の使用法
   4. 練習問題
   5. 文字列
   6. 2次配列と多次元配列
   7. 練習問題

5. 演算子
   1. 演算子の種類
   2. インクリメント演算子とデクリメント演算子
   3. 複合代入演算子
   4. ビット演算子
   5. シフト演算子
   6. キャスト演算子
   7. 順次演算子
   8. 条件演算子(三項演算子)
   9. sizeof演算子
   10.演算子の優先順位
   11.式と値
   12.条件式と値
   13.練習問題

6. ポインタ
   1. ポインタとは
   2. 配列とポインタ
   3. 文字列とポインタ
   4. ポインタのメリット

7. 関数
   1. 関数の作り方
   2. プロトタイプ宣言
   3. 配列とポインタ
   4. 値渡しとアドレス渡し
   5. main関数の引数
   6. 練習問題
   7. 標準関数
   8. 再帰関数

8. プリプロセッサ
   1. プリプロセッサとは
   2. #define, #undef
   3. #include
   4. #if
   5. #error、#warning
   6. マクロ
   7. 定義済みマクロ

9. 変数の有効範囲
   1. 変数の種類
   2. グローバル変数の有効範囲
   3. オート変数の有効範囲
   4. スタティック変数の有効範囲

10. 構造体
   1. 構造体とは
   2. 構造体の宣言
   3. 構造体の使用法
   4. 構造体のポインタ
   5. 構造体の構造体
   6. 構造体と関数
   7. 練習問題

11. 共用体
   1. 共用体とは
   2. 共用体の宣言
   3. 共用体の使用法

12. ファイル
   1. ファイル
   2. ファイル構造体
   3. ファイル作成・オープン
   4. ファイル読み込み
   5. ファイル書き込み
   6. ファイルクローズ
   7. ファイルエラー
   8. ランダムアクセス
   9. 標準入出力
   10. 練習問題
   11. ファイルの検索
   12. ファイルの削除
   13. ファイル名変更
   14. ディレクトリ操作

13. 低水準入出力関数
   1. 高水準入出力関数との違い
   2. ファイル作成
   3. ファイルオープン
   4. ファイル読み込み
   5. ファイル書き込み
   6. ファイルクローズ
   7. 標準入出力
   8. ランダムアクセス
   9. ファイルポインタとファイルディスクリプタ
   10. 練習問題

14. データ構造
   1. データ構造とは
   2. データ構造の種類
   3. 線形リスト
     4. 単方向リスト
     5. 双方向リスト
     6. 環状リスト
   7. ベクター
   8. 木
     9. 二分検索木
   10. スタック
   11. キュー

15 標準関数
   1. 文字分類・文字変換
   2. 文字列操作
   3. データ変換
   4. メモリー操作
   5. 数値演算
   6. ファイル操作(高水準入出力関数)
   7. ファイル操作(低水準入出力関数)
   8. プロセス関係

16 関数ポインタ
   1. 関数ポインタとは
   2. 関数ポインタ
   3. 関数ポインタと引数・戻り値
   4. 関数ポインタの配列

17. そしてその後は (PR)
   1. ヒューマンアカデミー C言語講座
   2. el school C言語講座
   3. C++入門


・ このページの先頭に戻る
・ トップページに戻る


・ このページの先頭に戻る
・ トップページに戻る

トップ-> C言語入門:標準関数-> 14-2. 文字列操作

←前ページへ :  トップへ :  次ページへ→


15-2.文字列操作

  ここでは、文字列を操作したり、比較などを行う関数を紹介します。

  ここで紹介する関数を使用するには<string.h>を インクルードする必要があります。

文字列操作関数
関数名書 式戻り値機 能
strcatchar* strcat( char* p1, char* p2 );p1の値がそのまま返る文字列p1の後に文字列p2をつなげる
strcmpint strcmp( char* p1, char* p2 );負・・・文字列p1が文字列p2より小さい
0・・・2つの文字列は同じ
正・・・文字列p1が文字列p2より大きい
文字列を比較する
stricmpint stricmp( char* p1, char* p2 );負・・・文字列p1が文字列p2より小さい
0・・・2つの文字列は同じ
正・・・文字列p1が文字列p2より大きい
文字列を比較する。
ただし、大文字小文字を区別しない。
strcpychar* strcpy( char* p1, char* p2 );p1の値がそのまま返る文字列p2p1が示すポインタにNULL文字を含めてコピーする
strlenint strlen( char* p1 );文字列p1の文字数を返す文字列の文字数を調べる
strsetchar* strnset( const char* string, int c );変更された文字列へのポインタstringc(charに変換された値)で上書きする。
strstrchar* strstr( const char* string1, const char* string2 );string2string1内に最初に現れた位置へのポインタを返す。
string2string1内に見つからない場合はNULLポインタを返します。
string2が長さ0の文字列を指している場合は、string1を返す。
部分文字列を見つけます。
strncatchar* strncat( char* p1, char* p2, unsigned int n );p1の値がそのまま返るp1p2のn文字目までつなげNULL文字を付加する。
文字列p2の長さがnよりも長い場合はp2の長さとする
strncmpint strncmp( char* p1, char* p2, unsigned int n );負・・・文字列p1が文字列p2より小さい
0・・・2つの文字列は同じ
正・・・文字列p1が文字列p2より大きい
文字列をn文字目まで比較する
strnicmpint strnicmp( char* p1, char* p2, unsigned int n );負・・・文字列p1が文字列p2より小さい
0・・・2つの文字列は同じ
正・・・文字列p1が文字列p2より大きい
文字列をn文字目まで比較する
ただし大文字小文字を区別しない。
strncpychar* strcpy( char* p1, char* p2, unsigned int n );p1の値がそのまま返るp2n文字目までをp1が示すポインタの位置にコピーする
ただしNULL文字はつけない
strnsetchar* strnset( const char* string, int c, size_t count );変更された文字列へのポインタstringの最初の最大count文字数をc(charに変換された値)で上書きする。
countstringより長い場合は、countの代わりにstringの長さになる。
strchrchar* strchr( const char* string, int c );string中でc が最初に現れた位置へのポインタを返します。
文字が見つからないとNULLを返す。
string中でcが最初に現れた位置を探す。
文字が見つからないとNULLが返される。
cがNULLの場合は、文字列の終端を返す。
strrchrchar* strrchr( const char* string, int c );string2で指定した文字セットに属する文字がstring1中に
最後に現れた位置(ポインタ)を返します。
string内にc(charに変換された値) が最後に現れた位置を見つけます。
strcspnsize_t strcspn( const char* string1, const char* string2 );string2で指定した文字セットに属する文字がstring1中に
最初に現れた位置のインデックスを返します。
複数の文字の中からいずれかの文字が最初に現れる場所を検索します。
strpbrkchar* strpbrk( const char* string1, const char* string2 );string2で指定した文字セットに属する文字がstring1中に
最初に現れた位置(ポインタ)を返します。
複数の文字の中からいずれかの文字が最初に現れる場所を検索します。
strcspnと戻り値が異なるだけです。
strdupchar* strdup( const char* string );複製した文字列のポインタstringを複製する。
内部でmallocを使用するので、freeで解放する必要がある。
strlwrchar* strlwr( const char* string );stringがそのまま返される指定された文字列を小文字に変換する
struprchar* strlwr( const char* string );stringがそのまま返される指定された文字列を大文字に変換する
strrevchar* strrev( const char* string );反転した文字列へのポインタを返します。指定された文字列を反転する。
strtoddouble strtod( const char* nptr, char** endptr );変換によってオーバーフローが発生しない限り、浮動小数点数値を返す。
オーバーフローが発生すると、定数+HUGE_VAL か -HUGE_VAL を返す。
変換できなかった場合、またはアンダーフローが発生した場合は 0 を返す。
文字列を倍精度浮動小数点数値に変換する。
認識できない文字が現れるとそこで処理を中止し、そこまでの結果を返す。
strtoldouble strtol( const char* nptr, char** endptr );変換によってオーバーフローが発生しない限り、文字列nptrに示されている値を返す。
オーバーフローが発生すると定数LONG_MAX または LONG_MIN を返す。
変換できなかった場合は 0 を返す。
文字列をlongに変換する。
認識できない文字が現れるとそこで処理を中止し、そこまでの結果を返す。
なお、は基数を表す。
strtouldouble strtoul( const char* nptr, char** endptr );変換によってオーバーフローが発生しない限り、文字列nptrに示されている値を返す。
オーバーフローが発生すると定数LONG_MAX または LONG_MIN を返す。
変換できなかった場合は 0 を返す。
文字列をunsigned longに変換する。
認識できない文字が現れるとそこで処理を中止し、そこまでの結果を返す。
なお、は基数を表す。
strtokchar* strtok( char* string1, const char* string2 );string1内の次のトークンへのポインタを返します。
それ以上トークンがないときは NULL を返します。
文字列内の次のトークンを見つけます。
呼び出されるたびに、string1内で見つかったデリミタをNULL文字に書き換えて文字列を変更します。
次のトークンを探す場合はstringにNULLを指定します。
下の例題を参照。

strtokの例

#include <string.h> #include <stdio.h> void main(){ char string[] = "This is \t a pen.\n My,name,is Nanashino-gonbe."; char delimiter[] = " ,\t\n"; char *token; printf("元も文字列:%s\n\n",string); printf("トークン:\n"); // 最初のトークンを取得します token = strtok( string, delimiter ); while( token != NULL ){ // string にトークンがなくなるまで繰り返します。 printf( "%s\n", token ); // 次のトークンを取得します。 token = strtok( NULL, delimiter ); } }


元も文字列:This is      a pen.
 My,name,is Nanashino-gonbe.

トークン:
This
is
a
pen.
My
name
is
Nanashino-gonbe.


←前ページへ :  トップへ :  次ページへ→