ポインタ変数を操作する(文字列操作関数などで紹介)

C言語が他の言語と最も異なる部分は、ポインタ変数で情報を管理できることと、 配列名が要素が並ぶ記憶空間(メモリ)の先頭アドレスを意味していることです。
これは、アセンブラの経験者からすれば、あたり前の処理です。 そして、アセンブラのようにコンピュータ本質を理解していないと正しいプログラムが書けないと 言われるゆえんです。
逆に完全に使えれば、アセンブラに近いレベルで、効率がよく高速で動作する作品が作れます。

C言語の初期学習において、ポインタを最も駆使していると感じるのが文字列でしょう。 なぜならC言語には文字列全体を表現する型がないからです。
単に、文字を並べて記憶した領域の先頭文字位置を(char *型)変数で管理してプログラミングします。 ここで、文字列を中心にポインタを扱う標準の関数を紹介します。
これらの関数定義を理解して、関数を作る時に考え方を真似るとよいでしょう。
これらは、文字集合に対する関数群ですが、データ対象が文字でない違うデータ集合になった 場合も、同じような考え方が可能だからです。

プロトタイプ宣言 概要説明 ヘッダーfile
int puts(char *s); sが指し示す記憶域に並ぶ文字並びを、'\0'の直前まで標準出力で出力して、最後に'\n'を出力する。失敗時はEOFを返す。 stdio.h
char * gets(char *s); sが指し示す記憶域へ、標準入力から入力した1行の文字列を記憶する。正常時はsと同じ位置を返す。失敗時はNULLを返す stdio.h
上記が、入出力関数
int strlen(char *s) sが指し示す文字列の長さ(byte数)を返します。(終端の'\0'は含まない範囲) string.h
int strcmp(char *s1, char *s2) s1が指し示す文字列と、s2がが指し示す文字列を比較し、等しいなら0、s1が大きいなら正、s2が大きいなら負の値を返す。 string.h
int strncmp(char *s1, char *s2,         int n) strcmpに対して、nの引数が追加され、s1やs2の文字列長がnに満たない場合、比較する範囲が、先頭よりn バイトだけで行なわれる。 string.h
char * strcpy(char *a, char *s) aが指し示す位置に、sが指し示す文字列をコピーして、aを返します。sの文字列を記憶可能な記憶域の先頭アドレスを、aで指定しなければなりません。 string.h
char * strncpy(char *a, char *s,         int n) strcpyに対して、nの引数が追加され、sの文字列長がnに満たない場合、コピー範囲はn バイトだけで行なわれる。(その時'\0'は設定されない) string.h
char * strcat(char *a, char *s) aが指し示す文字列の最後に、sが指し示す文字列をコピーして、aを返します。つまり文字列の連結に使いますが、aは、連結後の文字列を記憶できる記憶域で指定しなければなりません。 string.h
char * strchr(char * s, int c) sの文字列内において、cの文字を探し、見つかったsの文字列内のアドレスを返します。(見つからない時はNULLを返す) string.h
char * strstr(char * s, char * cp) sの文字列内において、cpの文字列と同じ並びの箇所を探し、見つかったsの文字列内のアドレスを返します。(見つからない時はNULLを返す) string.h
上記が、文字列操作関数
int atoi(char * s) sが指し示す文字列を整数の値に変換して、その値を返します stdlib.h
double atof(char * s) sが指し示す文字列を実数の値に変換して、その値を返します stdlib.h
int sscanf(char * s, char *format,        ...) 入力ストリームの代わりにsが指し示す文字列を、走査(scan)して、foramt文字列内の%の直後の変換指定で変換し、対応する引数が指す記憶域に設定する stdio.h
char * itoa( int val, char *a,        int radix ) valの値を、radixを基数として、その文字並びに変換し、aの記憶域に設定します。戻り値はaと同じです。 stdlib.h
int sprintf(char * a, char *format,        ...) foramt文字列を、表示しない代わりに、aが指す記憶へ設定します。foramtの文字列内の%の直後の変換指定で、対応する引数を文字列に変換し、aの記憶域へ埋め込む機能があります。 stdio.h
上記が、文字列と数値の変換関数

Unicode利用時は、システム依存ですが、上記関数の代わりに こちらで示す関数を使います。