1つは、文字列の読み取りと書き込みです
1.printf与プット
Printfは非常によく知られており、文字列を出力する関数puts()もあり、その使用法は次のとおりです。出力後に自動的にラップされることは注目に値します。
puts(str);
2.scanfと取得
scanfを使用して、次のように文字列を読み取ります(strは配列名であるため、アドレス文字&を取得する必要はなく、コンパイラは関数に渡すときにポインタとして扱います)。
scanf("%s",str);
scanfを使用して文字列を読み取る場合、ヌル文字を読み取ることはできません。また、改行文字を使用すると、scanfの読み取りが停止します(スペース文字とタブも同じ効果があります)。
一度に入力の行全体を読み取るために、gets関数を使用できます。get関数は、空白文字の読み取りをスキップせず、改行文字が見つかるまで停止します。
長さを指定できないため、配列に読み込むときに安全ではありません。Scanfは%nsを使用して最も多くの入力文字を示すことができますが、getsは本質的に安全ではありません(fgets関数を使用できます)
3.fgets関数
#include <stdio.h>
char * fgets(char * s、int size、FILE * stream);
これは、文字の配列を返す関数プロトタイプです。3つのパラメーターがあります。1つ目は配列の最初のアドレスを表し、2つ目は読み取り文字列の長さを表し、3つ目は読み取る入力ストリームを表します。標準入力ストリームstdin(ここで説明することはあまりありません)
次に、文字列内の文字にアクセスします
1.配列添え字アクセス
2.ポインタのインクリメントとデクリメントアクセス
3つ目は、C言語の文字列ライブラリを使用する
#include <string.h>头中
1.strcpy関数(文字列コピー)
プロトタイプ:
char * strcpy(char * s1、const char * s2);
文字列s2をs1にコピーします(s2の文字をs1を指す配列にコピーします)が、危険です.strcpy関数は、str2が指す文字列のサイズがstr1が指す配列に本当に適しているかどうかを確認できません。
コピーされる文字数を制限する3番目のパラメーターを持つ関数strncpy()もあり、このように使用できます。
strncpy(str1,str2,sizeof(str1) - 1);
str1[sizeof(str1) - 1] = '\0';
2.strlen関数(文字列の長さを求める)
プロトタイプ:
size_t strlen(const char * s);
size_t型は符号なし整数型ですが、非常に長い文字列を処理しない限り、整数として扱うことができます。つまり、戻り値の型は整数として理解されます。
strlen関数は、文字列sの長さを返します。sの最初のヌル文字の前の文字数(ヌル文字を除く)
3.strcat関数(文字列スプライシング)
プロトタイプ:
char * strcat(char * s1、const char * 2);
strcat関数は、文字列s2の内容を文字列s1の末尾に追加し、文字列s1(文字列へのポインタ)を返します。もちろん、str1の長さが、指定された文字列の文字を収容するのに十分でない場合str2では、それも危険です。
コピーされる文字数を制限する3番目のパラメーターを持つstrncat関数もあります。
strncat(str1,str2,sizeof(str1) - strlen(str1) -1);
str1の残りのスペースを計算し、1を引いて、空の文字用のスペースを残します。
4.strcmp関数
strcmp(文字列比較)
int strcmp(const char * s1、const char * s2);
s1がs2未満の場合0未満の値を返します
s1はs2に等しいreturn0
s1がs2より大きい場合は0より大きい値を返します
実際、それは悪い、s1-s2として理解することができます